中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux的終端與進程怎么實現

發布時間:2021-12-24 15:07:12 來源:億速云 閱讀:200 作者:iii 欄目:系統運維

這篇文章主要介紹“Linux的終端與進程怎么實現”,在日常操作中,相信很多人在Linux的終端與進程怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux的終端與進程怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Linux的普通進程(守護進程除外) 是終端的子進程,進程的存在要依賴終端為其提供空間包括標準輸入、標準輸出、標準出錯。比如,在ssh的客戶端啟動一個連入linux的終端,運行pstree命令,可以看到如下結果:

Linux的終端與進程怎么實現

可以看到pstree相當于當前終端啟動的一個子進程。

然后,我們在輸入sleep 2000 &命令,讓終端啟動一個在后臺運行的sleep進程,接下來再運行pstreee;

Linux的終端與進程怎么實現

可以看到,啟動了一個pid為1354的進程,然后該進程的父進程為sshd,也就是ssh服務啟動的終端;

然后,在/proc/1354/fd下,可以看到如下內容:

Linux的終端與進程怎么實現

其中的0、1、2分別指標準輸入、標準輸出和標準出錯,并且它們都指向了/dev/pts/0;

這里的pts是指:pseudo-terminal slave,是虛擬終端的一種實現方式,0是虛擬終端的編號。可以輸入ll /dev/pts/看一下結果:

Linux的終端與進程怎么實現

從中可以看出在/dev/pts目錄下,一共有3個虛擬終端正在運行。

現在回到虛擬機上的終端界面,也就是X系統上的終端,也在后臺運行一個sleep,再進到這個進程所對應的fd目錄下,可以看到如下結果:

Linux的終端與進程怎么實現

這里的標準輸入、標準輸出和標準出錯指向了/dev/tty1,tty是真正的終端,pts則是對它的虛擬。

在進程運行過程中(即使是后臺運行的進程),當終端退出時,進程將會收到SIGHUP信號,如果程序沒有對這種信號進行捕獲處理,進程默認就會退出。還以剛才那個在虛擬終端中后臺運行的sleep為例:

Linux的終端與進程怎么實現

這是,sleep正在運行是的情況,當我把它的終端關閉后,情況為:

Linux的終端與進程怎么實現

bash少了一個,并且sleep沒有了。

因為關閉了一個ssh的虛擬終端,自然會少一個bash,同時在作為該終端子進程的sleep也同時退出了。

那如何讓一個程序在終端退出后繼續工作呢?

首先一個明確的思路是,可以將要啟動的進程的父進程設為init,這樣不過當前的終端怎么樣,都不會影響進程的運行。可以這樣:

setuid ping localhost > /dev/null &

或者

( ping localhost > /dev/null &)

Linux的終端與進程怎么實現

可以看出,ping直接成為init的子進程了。

另外,也可以用nohup命令來實現。

到此,關于“Linux的終端與進程怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江源县| 南阳市| 泸州市| 枣强县| 于田县| 清远市| 三明市| 云浮市| 吉木乃县| 浦北县| 蕲春县| 民和| 石城县| 鄯善县| 耿马| 富裕县| 获嘉县| 华阴市| 桑日县| 祥云县| 谢通门县| 连云港市| 吉首市| 湘潭县| 舟山市| 湖州市| 迭部县| 格尔木市| 广河县| 浦北县| 牙克石市| 泰兴市| 榕江县| 新干县| 伊宁市| 永兴县| 尼勒克县| 广丰县| 田阳县| 靖州| 太谷县|