導(dǎo)語(yǔ):當(dāng)一個(gè)進(jìn)程結(jié)束了運(yùn)行或在半途中終止了運(yùn)行,那么內(nèi)核就需要釋放該進(jìn)程所占用的系統(tǒng)資源。這包括進(jìn)程運(yùn)行時(shí)打開的文件,申請(qǐng)的內(nèi)存等。
進(jìn)程退出
Linux 下進(jìn)程的退出分為正常退出和異常退出兩種:
1.正常退出
a. 在main()函數(shù)中執(zhí)行return
b.調(diào)用exit()函數(shù)
c.調(diào)用_exit()函數(shù)
2.異常退出
a.調(diào)用about函數(shù)
b.進(jìn)程收到某個(gè)信號(hào),而該信號(hào)使程序終止
不管是哪種退出方式,系統(tǒng)最終都會(huì)執(zhí)行內(nèi)核中的同一代碼。這段代碼用來(lái)關(guān)閉進(jìn)程所用已打開的文件描述符,釋放它所占用的內(nèi)存和其他資源。
幾種退出方式的比較
1.exit和return 的區(qū)別
exit是一個(gè)函數(shù),有參數(shù)。exit執(zhí)行完后把控制權(quán)交給系統(tǒng)。
return是函數(shù)執(zhí)行完后的返回,renturn執(zhí)行完后把控制權(quán)交給調(diào)用函數(shù)。
2.exit和abort的區(qū)別
exit是正常終止進(jìn)程。
about是異常終止。
exit()和_exit()函數(shù)
exit和_exit函數(shù)都是用來(lái)終止進(jìn)程的。當(dāng)程序執(zhí)行到exit或_exit時(shí),系統(tǒng)無(wú)條件的停止剩下所有操作,清除各種數(shù)據(jù)結(jié)構(gòu),并終止本進(jìn)程的運(yùn)行。
exit在頭文件stdlib.h中聲明,而_exit()聲明在頭文件unistd.h中聲明。 exit中的參數(shù)exit_code為0代表進(jìn)程正常終止,若為其他值表示程序執(zhí)行過(guò)程中有錯(cuò)誤發(fā)生。
exit()和_exit()的區(qū)別
_exit()執(zhí)行后立即返回給內(nèi)核,而exit()要先執(zhí)行一些清除操作,然后將控制權(quán)交給內(nèi)核。
調(diào)用_exit函數(shù)時(shí),其會(huì)關(guān)閉進(jìn)程所有的文件描述符,清理內(nèi)存以及其他一些內(nèi)核清理函數(shù),但不會(huì)刷新流(stdin, stdout, stderr ...). exit函數(shù)是在_exit函數(shù)之上的一個(gè)封裝,其會(huì)調(diào)用_exit,并在調(diào)用之前先刷新流。
exit()函數(shù)與_exit()函數(shù)最大區(qū)別就在于exit()函數(shù)在調(diào)用exit系統(tǒng)之前要檢查文件的打開情況,把文件緩沖區(qū)的內(nèi)容寫回文件。由于Linux的標(biāo)準(zhǔn)函數(shù)庫(kù)中,有一種被稱作“緩沖I/O”的操作,其特征就是對(duì)應(yīng)每一個(gè)打開的文件,在內(nèi)存中都有一片緩沖區(qū)。
每次讀文件時(shí),會(huì)連續(xù)的讀出若干條記錄,這樣在下次讀文件時(shí)就可以直接從內(nèi)存的緩沖區(qū)讀??;同樣,每次寫文件的時(shí)候也僅僅是寫入內(nèi)存的緩沖區(qū),等滿足了一定的條件(如達(dá)到了一定數(shù)量或遇到特定字符等),再將緩沖區(qū)中的內(nèi)容一次性寫入文件。
這種技術(shù)大大增加了文件讀寫的速度,但也給編程代來(lái)了一點(diǎn)兒麻煩。比如有一些數(shù)據(jù),認(rèn)為已經(jīng)寫入了文件,實(shí)際上因?yàn)闆](méi)有滿足特定的條件,它們還只是保存在緩沖區(qū)內(nèi),這時(shí)用_exit()函數(shù)直接將進(jìn)程關(guān)閉,緩沖區(qū)的數(shù)據(jù)就會(huì)丟失。因此,要想保證數(shù)據(jù)的完整性,就一定要使用exit()函數(shù)。
通過(guò)一個(gè)函數(shù)實(shí)例來(lái)看看它們之間的區(qū)別:
函數(shù)實(shí)例1: exit.c
#include
#include
int main()
{
printf("using exit----\n");
printf("This is the content in buffer\n");
exit(0);
}
執(zhí)行結(jié)果為:
using exit----
This is the content in buffer
函數(shù)實(shí)例2:_exit.c
#include
#include
int main()
{
printf("using _exit--\n");
printf("This is the content in buffer");
_exit(0);
}
執(zhí)行結(jié)果為 :
using _exit--
printf函數(shù)就是使用緩沖I/O的方式,該函數(shù)在遇到“\n”換行符時(shí)自動(dòng)的從緩沖區(qū)中將記錄讀出。所以exit()將緩沖區(qū)的數(shù)據(jù)寫完后才退出,而_exit()函數(shù)直接退出。
大家也可以把函數(shù)實(shí)例2中的printf("This is the content in buffer");改為printf("This is the content in buffer\n")(即在printf中最后加一個(gè)\n看運(yùn)行結(jié)果是什么,為什么會(huì)產(chǎn)生這樣的結(jié)果呢?)
父子進(jìn)程終止的先后順序不同會(huì)產(chǎn)生不同的結(jié)果
1.父進(jìn)程先于子進(jìn)程終止
此種情況就是我們前面所用的孤兒進(jìn)程。當(dāng)父進(jìn)程先退出時(shí),系統(tǒng)會(huì)讓init進(jìn)程接管子進(jìn)程 。
2.子進(jìn)程先于父進(jìn)程終止,而父進(jìn)程又沒(méi)有調(diào)用wait函數(shù)
此種情況子進(jìn)程進(jìn)入僵死狀態(tài),并且會(huì)一直保持下去直到系統(tǒng)重啟。子進(jìn)程處于僵死狀態(tài)時(shí),內(nèi)核只保存進(jìn)程的一些必要信息以備父進(jìn)程所需。此時(shí)子進(jìn)程始終占有著資源,同時(shí)也減少了系統(tǒng)可以創(chuàng)建的最大進(jìn)程數(shù)。
什么是 僵死狀態(tài)呢?一個(gè)已經(jīng)終止、但是其父進(jìn)程尚未對(duì)其進(jìn)行善后處理(獲取終止子進(jìn)程的有關(guān)信息,釋放它仍占有的資源)的進(jìn)程被稱為僵死進(jìn)程(zombie)。
3.子進(jìn)程先于父進(jìn)程終止,而父進(jìn)程調(diào)用了wait函數(shù)
此時(shí)父進(jìn)程會(huì)等待子進(jìn)程結(jié)束。
以下課程可免費(fèi)試聽C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。
想學(xué)習(xí)的你和我聯(lián)系預(yù)約就可以免費(fèi)聽課了。
宋工企鵝號(hào):35--24-65--90-88 Tel/WX:173--17--95--19--08
Linux進(jìn)程退出之方法論
相關(guān)推薦
Linux進(jìn)程退出的技術(shù)難點(diǎn)分析
當(dāng)一個(gè)進(jìn)程結(jié)束了運(yùn)行或在半途中終止了運(yùn)行,那么內(nèi)核就需要釋放該進(jìn)程所占用的系統(tǒng)資源。這包括進(jìn)程運(yùn)行時(shí)打開的文
2017-10-27 15:45:104344
Linux下進(jìn)程通訊之信號(hào)量集
?信號(hào)量集,就是由多個(gè)信號(hào)量組成的一個(gè)數(shù)組。 作為一個(gè)整體, 信號(hào)量集中所有的信號(hào)量使用同一個(gè)等待隊(duì)列。 Linux 的信號(hào)量集為進(jìn)程請(qǐng)求多個(gè)資源創(chuàng)造了條件。 Linux 規(guī)定, 當(dāng)進(jìn)程的一個(gè)操作
2022-08-19 19:55:081548
Linux驅(qū)動(dòng)開發(fā)_視頻廣告機(jī)開發(fā)、Linux進(jìn)程編程介紹
介紹Linux下進(jìn)程編程、進(jìn)程的創(chuàng)建、進(jìn)程通信、完成廣告機(jī)項(xiàng)目代碼。
2022-09-17 15:49:14911
Linux開發(fā)_Linux下進(jìn)程編程
介紹Linux下進(jìn)程概念、進(jìn)程信號(hào)捕獲、進(jìn)程管理相關(guān)的命令的使用等知識(shí)點(diǎn)。
2022-09-17 15:38:451059
Linux進(jìn)程是如何創(chuàng)建出來(lái)的?
在 Linux 中,進(jìn)程是我們非常熟悉的東東了,哪怕是只寫過(guò)一天代碼的人也都用過(guò)它。但是你確定它不是你最熟悉的陌生人?我們今天通過(guò)深度剖析進(jìn)程的創(chuàng)建過(guò)程,幫助你提高對(duì)進(jìn)程的理解深度。
2022-11-15 09:27:49419
Linux系統(tǒng)下進(jìn)程的幾種狀態(tài)介紹
文章對(duì) Linux 系統(tǒng)下進(jìn)程的幾種狀態(tài)進(jìn)行介紹,并對(duì)系統(tǒng)出現(xiàn)大量僵尸進(jìn)程和不可中斷進(jìn)程的場(chǎng)景進(jìn)行分析,使用常用的幾種工具進(jìn)行問(wèn)題分析定位。
2022-11-24 16:15:119681
Linux使用Systemd管理進(jìn)程服務(wù)
今天浩道跟大家分享linux運(yùn)維中大家很少用到的一個(gè)硬核干貨,使用 Systemd 管理進(jìn)程服務(wù)。讓你體驗(yàn)一下該技巧帶來(lái)的便捷性!
2022-12-12 09:02:59323
Linux下進(jìn)程間如何實(shí)現(xiàn)共享內(nèi)存通信
這次我們來(lái)講一下Linux進(jìn)程通信中重要的通信方式:共享內(nèi)存作為Linux軟件開發(fā)攻城獅,進(jìn)程間通信是必須熟練掌握的重要技能,而共享內(nèi)存是在程序開發(fā)中常用的也是重要的一種進(jìn)程間通信方式。
2023-04-26 17:14:47560
Linux進(jìn)程的睡眠和喚醒
在Linux中,僅等待CPU時(shí)間的進(jìn)程稱為就緒進(jìn)程,它們被放置在一個(gè)運(yùn)行隊(duì)列中,一個(gè)就緒進(jìn)程的狀 態(tài)標(biāo)志位為 TASK_RUNNING。一旦一個(gè)運(yùn)行中的進(jìn)程時(shí)間片用完, Linux 內(nèi)核的調(diào)度器會(huì)剝奪這個(gè)進(jìn)程對(duì)CPU的控制權(quán),并且從運(yùn)行隊(duì)列中選擇一個(gè)合適的進(jìn)程投入運(yùn)行。
2023-06-07 12:26:56256
Linux下查詢進(jìn)程占用的內(nèi)存方法總結(jié)
今天浩道跟大家一篇關(guān)于運(yùn)維牛人如何在Linux下挖出吃內(nèi)存的進(jìn)程,可以說(shuō)是相當(dāng)干的一個(gè)運(yùn)維技能了,一起看看吧!
2023-07-27 10:51:587875
Linux下進(jìn)程通信的方法
進(jìn)程是操作系統(tǒng)的概念,每當(dāng)我們執(zhí)行一個(gè)程序時(shí),對(duì)于操作系統(tǒng)來(lái)講就創(chuàng)建了一個(gè)進(jìn)程,在這個(gè)過(guò)程中,伴隨著資源的分配和釋放??梢哉J(rèn)為進(jìn)程是一個(gè)程序的一次執(zhí)行過(guò)程。
2023-11-29 14:45:36313
為行業(yè)找路徑,為商業(yè)筑壁壘,解碼容聯(lián)云的大模型“方法論”
為行業(yè)找路徑,為商業(yè)筑壁壘,解碼容聯(lián)云的大模型“方法論”
2023-12-21 21:56:52917
Linux 查看進(jìn)程和刪除進(jìn)程
1. 在 LINUX 命令平臺(tái)輸入 1-2 個(gè)字符后按 Tab 鍵會(huì)自動(dòng)補(bǔ)全后面的部分(前提是要有這個(gè)東西,例如在裝了 tomcat 的前提下, 輸入 tomcat 的 to 按 tab)。2.
2016-04-24 00:04:10
Linux進(jìn)程退出之方法論
的內(nèi)存等。進(jìn)程退出Linux 下進(jìn)程的退出分為正常退出和異常退出兩種:1.正常退出a. 在main()函數(shù)中執(zhí)行return b.調(diào)用exit()函數(shù)c.調(diào)用_exit()函數(shù)2.異常退出a.調(diào)用
2017-10-26 21:45:23
Linux下進(jìn)程安全該怎么保護(hù)?
通過(guò)綜合采用用戶級(jí)別的top、ps等系統(tǒng)工具以及Linux內(nèi)核防護(hù)技術(shù),我們可以從用戶/內(nèi)核兩個(gè)層次全方位地保護(hù)Linux系統(tǒng)中重要系統(tǒng)進(jìn)程以及用戶進(jìn)程的安全性,從而達(dá)到保護(hù)Linux系統(tǒng)安全的目的。
2019-11-11 08:05:44
Linux下進(jìn)程間通信
華清遠(yuǎn)見(jiàn)嵌入式linux學(xué)習(xí)資料《Linux下進(jìn)程間通信》,通過(guò)前面的學(xué)習(xí),讀者已經(jīng)知道了進(jìn)程是一個(gè)程序的一次執(zhí)行,是系統(tǒng)資源分配的最小單元。這里所說(shuō)的進(jìn)程一般是指運(yùn)行在用戶態(tài)的進(jìn)程,而由于處于用戶態(tài)的不同進(jìn)程間是彼此隔離的,就像處于不同城市的人們......http://t.cn/z8VxVfE
2013-09-04 10:07:58
Linux下進(jìn)程間通信方式-管道
連接到另一個(gè)程序的輸入。Linux的管道主要包括兩種:無(wú)名管道和有名管道。 1.無(wú)名管道 無(wú)名管道是Linux中管道通信的一種原始方法,如圖1(左)所示,它具有如下特點(diǎn): ● 它只能用于具有親緣關(guān)系的進(jìn)程
2013-08-29 15:29:22
Linux下常用的查看進(jìn)程及強(qiáng)制關(guān)掉進(jìn)程方法
命令,可以清晰地看到進(jìn)程的ID號(hào),然后直接用KILL -9 ID號(hào)直接關(guān)掉進(jìn)程了事,-9是強(qiáng)制關(guān)的意思,它還有很多用法,我就不介紹了,有需要大家上網(wǎng)搜(linux kill),如果不想太麻煩,也不想
2015-11-14 14:08:34
Linux下的進(jìn)程結(jié)構(gòu)
進(jìn)程不但包括程序的指令和數(shù)據(jù),而且包括程序計(jì)數(shù)器和處理器的所有寄存器及存儲(chǔ)臨時(shí)數(shù)據(jù)的進(jìn)程堆棧,因此正在執(zhí)行的進(jìn)程包括處理器當(dāng)前的一切活動(dòng)。 因?yàn)?b class="flag-6" style="color: red">Linux是一個(gè)多進(jìn)程的操作系統(tǒng),所以其他的進(jìn)程必須
2017-05-27 09:24:11
Linux下的進(jìn)程結(jié)構(gòu)
`#嵌入式培訓(xùn)#華清遠(yuǎn)見(jiàn)嵌入式linux學(xué)習(xí)資料《Linux下的進(jìn)程結(jié)構(gòu)》,進(jìn)程不但包括程序的指令和數(shù)據(jù),而且包括程序計(jì)數(shù)器和處理器的所有寄存器及存儲(chǔ)臨時(shí)數(shù)據(jù)的進(jìn)程堆棧,因此正在執(zhí)行的進(jìn)程包括處理器當(dāng)前的一切活動(dòng)。詳情:http://t.cn/zQacK50`
2013-08-05 11:05:59
Linux中的進(jìn)程包含哪幾個(gè)段呢
進(jìn)程是什么?Linux中的進(jìn)程包含哪幾個(gè)段呢?進(jìn)程創(chuàng)建思考運(yùn)行結(jié)果?
2021-12-23 06:07:48
Linux守護(hù)進(jìn)程
了子進(jìn)程后退出,此時(shí)該子進(jìn)程不就沒(méi)有父進(jìn)程了嗎?守護(hù)進(jìn)程中確實(shí)會(huì)出現(xiàn)這么一個(gè)有趣的現(xiàn)象:由于父進(jìn)程已經(jīng)先于子進(jìn)程退出,就會(huì)造成子進(jìn)程沒(méi)有父進(jìn)程,從而變成一個(gè)孤兒進(jìn)程。在Linux中,每當(dāng)系統(tǒng)發(fā)現(xiàn)一個(gè)
2013-08-22 09:17:30
Linux的進(jìn)程、線程以及調(diào)度
報(bào)名:《Linux的進(jìn)程、線程以及調(diào)度》4節(jié)系列微課(522-25)
2020-05-15 14:44:24
linux系統(tǒng)學(xué)習(xí)方法論
基于Linux的學(xué)習(xí)方法我是一名普通的計(jì)算機(jī)軟件人員,接受過(guò)普通的計(jì)算機(jī)科學(xué)教育,有6年工作經(jīng)驗(yàn),由于工作原因接觸過(guò)的系統(tǒng)包括DOS、Windows、Windows NT、Digital UNIX
2019-04-09 16:20:43
論火力發(fā)電鍋爐之改進(jìn)方法
論火力發(fā)電鍋爐之改進(jìn)李萬(wàn)鴻2020-8-21摘要:在充分研究電力鍋爐和工業(yè)熱水鍋爐的原理和結(jié)構(gòu)的基礎(chǔ)上,本文提出一種電力鍋爐的改進(jìn)辦法,新穎實(shí)用,可以充分利用火焰燃燒的熱能,提高熱效率,從而
2021-06-30 07:00:04
EMC整改的萬(wàn)能方法論(五分鐘的時(shí)間教會(huì)你EMC整改)
EMC整改的萬(wàn)能方法論:1. 當(dāng)你開始接到EMC整改任務(wù)時(shí),不要慌張,先靜下心,拿起NG的機(jī)子先看一遍,看看PCB板是否存在布局不合理,走線凌亂,地線或電源線設(shè)計(jì)不合理等問(wèn)題?2. 建議使用專用
2017-11-22 21:53:19
FPGA設(shè)計(jì)方法論
2013-08-16 07:56:33
OEM應(yīng)如何將該標(biāo)準(zhǔn)應(yīng)用在他們的產(chǎn)品研發(fā)及生產(chǎn)過(guò)程中?
本文將著重解讀AUTOSAR方法論內(nèi)容,講解OEM應(yīng)如何將該標(biāo)準(zhǔn)應(yīng)用在他們的產(chǎn)品研發(fā)及生產(chǎn)過(guò)程中。
2021-05-12 06:04:31
【Linux學(xué)習(xí)雜談】之進(jìn)程初步
在Linux底下我們可以使用export來(lái)看下系統(tǒng)中所有的環(huán)境變量。進(jìn)程環(huán)境表,每一個(gè)進(jìn)程中都有一份所有環(huán)境變量構(gòu)成的一個(gè)表格,也就是說(shuō)我們可以直接使用這些變量。進(jìn)程環(huán)境表實(shí)際就是一個(gè)字符串?dāng)?shù)組,用
2016-08-21 17:00:01
【Linux學(xué)習(xí)雜談】之進(jìn)程狀態(tài)
同樣的一個(gè)會(huì)話會(huì)是由其中的一個(gè)進(jìn)程創(chuàng)建,這個(gè)進(jìn)程就是這個(gè)會(huì)話的老大,這個(gè)進(jìn)程的PID就成為了會(huì)話的標(biāo)識(shí)ID,每個(gè)會(huì)話可以連接一個(gè)會(huì)話中斷,也就是我們的在Linux底下的terminal。會(huì)話的意義在于將
2016-09-27 00:36:29
【Linux學(xué)習(xí)雜談】之進(jìn)程的誕生和消失
死機(jī)。 來(lái)看下幾個(gè)進(jìn)程的概念:僵尸進(jìn)程:(1)子進(jìn)程先于父進(jìn)程結(jié)束Linux系統(tǒng)設(shè)計(jì)的時(shí)候,當(dāng)每一個(gè)進(jìn)程結(jié)束的時(shí)候,操作系統(tǒng)會(huì)回收所有的子資源,當(dāng)我們?cè)诔绦蛑袥](méi)有對(duì)資源進(jìn)行釋放的話進(jìn)程結(jié)束會(huì)被系統(tǒng)回收
2016-09-01 20:38:54
【Linux學(xué)習(xí)雜談】之進(jìn)程相關(guān)
是Linux當(dāng)中用來(lái)管理進(jìn)行的一個(gè)數(shù)據(jù)結(jié)構(gòu),英文簡(jiǎn)稱是PCB,當(dāng)然不要和我們普通說(shuō)的PCB電路板混了,這個(gè)是不一樣的,英文全稱是process control block. 進(jìn)程ID用來(lái)唯一標(biāo)記一個(gè)進(jìn)程
2016-08-24 22:58:36
【Linux學(xué)習(xí)雜談】之進(jìn)程通信
本帖最后由 michael_llh 于 2016-10-17 13:14 編輯
我們?cè)?b class="flag-6" style="color: red">Linux應(yīng)用編程當(dāng)中如果需要用到多個(gè)進(jìn)程來(lái)完成一個(gè)任務(wù)的話那么我們就沒(méi)有辦法避開進(jìn)程間通信的問(wèn)題,并且
2016-10-15 14:45:17
【Linux學(xué)習(xí)雜談】之創(chuàng)建單例進(jìn)程
, 0664);if(fd < 0){ // 如果errno等于EEXIST就表示這個(gè)文件已經(jīng)存在 if(errno == EEXIST){// 這個(gè)時(shí)候就應(yīng)該退出進(jìn)程printf("這個(gè)進(jìn)程
2016-09-30 17:51:54
【北京迅為iMX6ULL】嵌入式學(xué)習(xí)之Linux系統(tǒng)編程視頻教程
怎么學(xué)習(xí)Linux系統(tǒng)編程框架學(xué)習(xí)方法、內(nèi)核向用戶空間提供的接口或者說(shuō)是函數(shù),系統(tǒng)調(diào)用接口,學(xué)習(xí)這些接口的功能以及相關(guān)的參數(shù)和返回值等。 嵌入式學(xué)習(xí)之Linux系統(tǒng)編程視頻教程在線觀看:https
2021-03-01 14:29:57
【工程源碼】Linux 查看進(jìn)程和刪除進(jìn)程
本文和設(shè)計(jì)代碼由FPGA愛(ài)好者小梅哥編寫,未經(jīng)作者許可,本文僅允許網(wǎng)絡(luò)論壇復(fù)制轉(zhuǎn)載,且轉(zhuǎn)載時(shí)請(qǐng)標(biāo)明原作者?;久钪v解在 LINUX 命令平臺(tái)輸入 1-2 個(gè)字符后按 Tab 鍵會(huì)自動(dòng)補(bǔ)全后面的部分
2020-02-23 20:05:04
哪些方式可以實(shí)現(xiàn)Linux系統(tǒng)下的進(jìn)程間通信
哪些方式可以實(shí)現(xiàn)Linux系統(tǒng)下的進(jìn)程間通信?進(jìn)程與線程有哪些不同之處呢?
2021-12-24 06:38:50
孤兒進(jìn)程和僵尸進(jìn)程
。3)僵尸進(jìn)程僵尸進(jìn)程:子進(jìn)程退出了,但是父進(jìn)程沒(méi)有用wait或waitpid去獲取子進(jìn)程的狀態(tài)信息,那么子進(jìn)程的進(jìn)程描述符仍然保存在系統(tǒng)中,這種進(jìn)程稱為僵死進(jìn)程。二.問(wèn)題危害注意:unix提供了一種
2016-11-29 14:08:43
學(xué)習(xí)python人工智能,需要了解的Linux系統(tǒng)進(jìn)程知識(shí)大匯總!
學(xué)習(xí)Python人工智能時(shí),需要了解Linux系統(tǒng)進(jìn)程知識(shí),以下是對(duì)Linux系統(tǒng)進(jìn)程知識(shí)的匯總:當(dāng)一個(gè)程序開始執(zhí)行后,在開始執(zhí)行到執(zhí)行完畢退出這段時(shí)間內(nèi),它在內(nèi)存中的部分就叫稱作一個(gè)進(jìn)程
2018-07-03 18:04:44
實(shí)驗(yàn):編寫多進(jìn)程程序
1.實(shí)驗(yàn)?zāi)康?通過(guò)編寫多進(jìn)程程序,使讀者熟練掌握f(shuō)ork()、exec()、wait()和waitpid()等函數(shù)的使用,進(jìn)一步理解在Linux中多進(jìn)程編程的步驟。 2.實(shí)驗(yàn)內(nèi)容 該實(shí)驗(yàn)有3個(gè)進(jìn)程
2013-09-05 15:32:09
常用的Linux指令怎么查看當(dāng)前進(jìn)程?怎么執(zhí)行退出
Linux驅(qū)動(dòng)指令常用的Linux指令怎么查看當(dāng)前進(jìn)程?怎么執(zhí)行退出?怎么查看當(dāng)前路徑?查看當(dāng)前進(jìn)程: ps執(zhí)行退出: exit查看當(dāng)前路徑: pwdls 命令執(zhí)行什么功能? 可以帶哪些參數(shù)?功能
2021-12-15 07:43:00
干貨分享:基于嵌入式Linux中進(jìn)程調(diào)度實(shí)現(xiàn)方法
可運(yùn)行隊(duì)列中。Linux 的進(jìn)程調(diào)度采用了動(dòng)態(tài)優(yōu)先級(jí) 和權(quán)值調(diào)控的方法,既可實(shí)現(xiàn)上述三種調(diào)度策略,又能保證實(shí)時(shí)進(jìn)程總是比普通進(jìn)程優(yōu)先使用 CPU。描述進(jìn)程的數(shù)據(jù)結(jié)構(gòu) task_struct 中用以下幾個(gè)
2019-12-10 14:17:58
教你一種如何優(yōu)雅地退出QEMU模擬器的方法
1、如何優(yōu)雅地退出QEMU模擬器大家都知道,Linux退出一個(gè)控制臺(tái)啟動(dòng)的程序,使用CTRL+C就可以把它退出來(lái),我試了一下,發(fā)現(xiàn)它壓根就不認(rèn)CTRL+C,只是一直輸出一些亂碼符號(hào)。既然CTRL+C
2022-08-26 16:12:25
有關(guān)Linux系統(tǒng)的PBC (進(jìn)程控制塊)基礎(chǔ)知識(shí)介紹
1、Linux進(jìn)程管理之基礎(chǔ)知識(shí)介紹進(jìn)程就是處于執(zhí)行期的程序,但進(jìn)程不僅僅局限于一段可執(zhí)行程序代碼(也就是所謂的代碼段,text section),從上面的數(shù)據(jù)結(jié)構(gòu)可以看到,進(jìn)程還包含其他的資源
2022-06-23 16:27:52
硬件驗(yàn)證方法簡(jiǎn)明介紹
、包和庫(kù),特別是半導(dǎo)體知識(shí)產(chǎn)權(quán) (IP) 核心設(shè)計(jì)過(guò)程,包括以下章節(jié):驗(yàn)證方法——概述驗(yàn)證方法——簡(jiǎn)介驗(yàn)證 IP - 方法論的作用如何選擇驗(yàn)證方法基于標(biāo)準(zhǔn)的 IP 和 SoC 的驗(yàn)證方法功能驗(yàn)證方法
2022-11-26 20:43:20
(轉(zhuǎn))linux系統(tǒng)學(xué)習(xí)方法論
(轉(zhuǎn))linux系統(tǒng)學(xué)習(xí)方法論 基于Linux的學(xué)習(xí)方法 我是一名普通的計(jì)算機(jī)軟件人員,接受過(guò)普通的計(jì)算機(jī)科學(xué)教育,有6年工作經(jīng)驗(yàn),由于工作原因接觸過(guò)的系統(tǒng)包括DOS、Windows、Windows
2020-04-23 17:12:20
Linux進(jìn)程管理
Linux進(jìn)程管理
本章主要介紹進(jìn)程的概念、狀態(tài)、構(gòu)成以及Linux進(jìn)程的相關(guān)知識(shí)。
掌握進(jìn)程的概念
掌握進(jìn)程的描述、狀態(tài)及轉(zhuǎn)換
理解進(jìn)程的特征
2009-04-28 14:57:410
Linux 2.6進(jìn)程調(diào)度
分析了與Linux 2.6 進(jìn)程調(diào)度密切相關(guān)的一些重要數(shù)據(jù)結(jié)構(gòu),詳細(xì)描述了進(jìn)程調(diào)度的時(shí)機(jī)、調(diào)度的策略和調(diào)度器的工作流程,并從算法分析和HackBench 測(cè)試兩個(gè)方面對(duì)Linux 2.4和2.6 進(jìn)程調(diào)
2009-06-13 10:13:0911
LINUX 進(jìn)程源代碼分析
LINUX 進(jìn)程源代碼分析
task_struct 數(shù)據(jù)結(jié)構(gòu)表示進(jìn)程的數(shù)據(jù)結(jié)構(gòu)是struct task_struct。task_struct 結(jié)構(gòu)是進(jìn)程實(shí)體的核心,Linux 內(nèi)核通過(guò)對(duì)該結(jié)構(gòu)的相關(guān)操作來(lái)控制
2010-02-09 15:13:4116
Linux源碼分析系列的進(jìn)程
概述:相關(guān)概念,進(jìn)程在整個(gè)內(nèi)核中的功能位置,源代碼中進(jìn)程相關(guān)的文件源代碼中進(jìn)程相關(guān)的文件。 Linux核心是多任務(wù)的,運(yùn)行的程序稱作進(jìn)程 (process)線程 (Thread) 為單一進(jìn)程提供了做多
2011-11-03 22:26:0232
Linux進(jìn)程控制編程
7.2 Linux進(jìn)程控制編程 1.fork() 在Linux中創(chuàng)建一個(gè)新進(jìn)程的惟一方法是使用fork()函數(shù)。fork()函數(shù)是Linux中一個(gè)非常重要的函數(shù),和讀者以往遇到的函數(shù)有一些區(qū)別,因?yàn)?/div>
2017-10-18 14:16:080
Linux守護(hù)進(jìn)程詳解
分享到:標(biāo)簽:進(jìn)程控制 Linux 守護(hù)進(jìn)程 子進(jìn)程 7.3 Linux守護(hù)進(jìn)程 7.3.1 守護(hù)進(jìn)程概述 守護(hù)進(jìn)程,也就是通常所說(shuō)的Daemon進(jìn)程,是Linux中的后臺(tái)服務(wù)進(jìn)程。它是一個(gè)生存期
2017-10-18 14:24:470
進(jìn)程控制開發(fā)之編寫多進(jìn)程程序?qū)嶒?yàn)解析
7.4.1 編寫多進(jìn)程程序 1.實(shí)驗(yàn)?zāi)康?通過(guò)編寫多進(jìn)程程序,使讀者熟練掌握f(shuō)ork()、exec()、wait()和waitpid()等函數(shù)的使用,進(jìn)一步理解在Linux中多進(jìn)程編程的步驟。 2.
2017-10-18 16:33:020
基于Linux進(jìn)程管理的詳細(xì)剖析
上一篇,我們講到了Linux內(nèi)核開發(fā)和應(yīng)用程序開發(fā),今天我們來(lái)講講Linux重點(diǎn)部分Linux的進(jìn)程管理。
2018-01-26 11:24:103453
Linux進(jìn)程管理:什么是進(jìn)程?進(jìn)程的生命周期
所有運(yùn)行在Linux操作系統(tǒng)中的進(jìn)程都被task_struct結(jié)構(gòu)管理,該結(jié)構(gòu)同時(shí)被叫作進(jìn)程描述。一個(gè)進(jìn)程描述包含一個(gè)運(yùn)行進(jìn)程所有的必要信息,例如進(jìn)程標(biāo)識(shí)、進(jìn)程屬性和構(gòu)建進(jìn)程的資源。如果你了解該進(jìn)程構(gòu)造,你就能理解對(duì)于進(jìn)程的運(yùn)行和性能來(lái)說(shuō),什么是重要的。圖1-2展示了進(jìn)程結(jié)構(gòu)相關(guān)的進(jìn)程信息概述。
2019-02-15 14:29:067375
如何設(shè)置Linux進(jìn)程的睡眠和喚醒
在Linux中,僅等待CPU時(shí)間的進(jìn)程稱為就緒進(jìn)程,它們被放置在一個(gè)運(yùn)行隊(duì)列中,一個(gè)就緒進(jìn)程的狀 態(tài)標(biāo)志位為TASK_RUNNING。
2019-04-23 14:29:13791
Linux進(jìn)程退出之方法論
當(dāng)一個(gè)進(jìn)程結(jié)束了運(yùn)行或在半途中終止了運(yùn)行,那么內(nèi)核就需要釋放該進(jìn)程所占用的系統(tǒng)資源。這包括進(jìn)程運(yùn)行時(shí)打開的文件,申請(qǐng)的內(nèi)存等。
2019-04-23 15:10:20559
Linux系統(tǒng)下init進(jìn)程的前世今生
Linux系統(tǒng)中的init進(jìn)程(pid=1)是除了idle進(jìn)程(pid=0,也就是init_task)之外另一個(gè)比較特殊的進(jìn)程,它是Linux內(nèi)核開始建立起進(jìn)程概念時(shí)第一個(gè)通過(guò)
2019-04-28 17:23:41830
學(xué)會(huì)Linux進(jìn)程管理的方法
Linux 是一種動(dòng)態(tài)系統(tǒng),能夠適應(yīng)不斷變化的計(jì)算需求。Linux 計(jì)算需求的表現(xiàn)是以進(jìn)程 的通用抽象為中心的。進(jìn)程可以是短期的(從命令行執(zhí)行的一個(gè)命令),也可以是長(zhǎng)期的(一種網(wǎng)絡(luò)服務(wù))。因此,對(duì)進(jìn)程及其調(diào)度進(jìn)行一般管理就顯得極為重要。
2019-05-16 17:19:09647
Linux 進(jìn)程狀態(tài)淺析
–EXIT_DEAD),退出狀態(tài),進(jìn)程即將被銷毀。而進(jìn)程在退出過(guò)程中也可能不會(huì)保留它的task_struct。比如這個(gè)進(jìn)程是多線程程序中被detach過(guò)的進(jìn)程(進(jìn)程?線程?參見(jiàn)《linux線程淺析》)?;蛘吒?b class="flag-6" style="color: red">進(jìn)程通過(guò)
2019-04-02 14:40:48209
Linux 系統(tǒng)中僵尸進(jìn)程
呢?一個(gè)進(jìn)程終止的方法很多,進(jìn)程終止后有些信息對(duì)于父進(jìn)程和內(nèi)核還是很有用的,例如進(jìn)程的ID號(hào)、進(jìn)程的退出狀態(tài)、進(jìn)程運(yùn)行的CPU時(shí)間等。因此進(jìn)程在終止時(shí),回收所有內(nèi)核分配給它的內(nèi)存、關(guān)閉它打開的所有文件
2019-04-02 14:40:52330
linux守護(hù)進(jìn)程實(shí)例
今天完成一個(gè)守護(hù)進(jìn)程實(shí)驗(yàn)?! ? 熟悉守護(hù)進(jìn)程編寫和調(diào)試(系統(tǒng)日志) 2 編寫多進(jìn)程程序的方法 本實(shí)驗(yàn)首先創(chuàng)建一個(gè)守護(hù)進(jìn)程,然后在其中新建一個(gè)子進(jìn)程,暫停10秒,自動(dòng)退出
2019-04-02 14:42:58291
linux進(jìn)程調(diào)度淺析
(如桌面系統(tǒng)、網(wǎng)絡(luò)服務(wù)器、等)負(fù)載都比較低,但是linux作為一個(gè)通用操作系統(tǒng),不能假設(shè)系統(tǒng)負(fù)載低,必須為應(yīng)付高負(fù)載下的進(jìn)程調(diào)度做精心的設(shè)計(jì)。當(dāng)然,這些設(shè)計(jì)對(duì)于低負(fù)載(且沒(méi)有什么實(shí)時(shí)性要求)的環(huán)境,沒(méi)多大
2019-04-02 14:45:10251
關(guān)于Linux進(jìn)程你所需要知道的一切
進(jìn)程的基本方法是給它們發(fā)送信號(hào)。你可以發(fā)送很多信號(hào)給一個(gè)進(jìn)程,運(yùn)行下面的命令可以查看所有信號(hào):$?kill?-l?? 列出所有 Linux 信號(hào)要給一個(gè)進(jìn)程發(fā)送信號(hào),可以使用我們之前提到的 kill
2019-04-02 14:47:56273
Linux進(jìn)程基礎(chǔ)
功能,被打扮成進(jìn)程的樣子以方便操作系統(tǒng)管理。我們不必考慮它們。)?我們看第一行,PID為1,名字為init。這個(gè)進(jìn)程是執(zhí)行/bin/init這一文件(程序)生成的。當(dāng)Linux啟動(dòng)的時(shí)候,init
2019-04-02 14:50:39197
Linux進(jìn)程調(diào)度時(shí)機(jī)概念分析
Linux在眾多進(jìn)程中是怎么進(jìn)行調(diào)度的,這個(gè)牽涉到Linux進(jìn)程調(diào)度時(shí)機(jī)的概念,由Linux內(nèi)核中Schedule()的函數(shù)來(lái)決定是否要進(jìn)行進(jìn)程的切換,如果要切換的話,切換到哪個(gè)進(jìn)程等等。
2020-01-23 17:14:002495
linux的進(jìn)程怎么查看
在Linux系統(tǒng)中,每個(gè)程序啟動(dòng)后可以創(chuàng)建一個(gè)或多個(gè)進(jìn)程。例如,提供Web服務(wù)的httpd程序,當(dāng)有大量用戶同時(shí)訪問(wèn)Web頁(yè)面時(shí),httpd程序可能會(huì)創(chuàng)建多個(gè)進(jìn)程來(lái)提供服務(wù)。
2020-05-22 08:56:59745
Linux進(jìn)程間通信方式——管道
管道是Linux中進(jìn)程間通信的一種方式,它把一個(gè)程序的輸出直接連接到另一個(gè)程序的輸入。Linux的管道主要包括兩種:無(wú)名管道和有名管道。
2020-06-01 09:13:541106
Linux進(jìn)程的概念說(shuō)明
進(jìn)程是 Linux 操作系統(tǒng)中最重要的基本概念之一,這一節(jié)我們將了解學(xué)習(xí) Linux 進(jìn)程的一些基礎(chǔ)知識(shí)。
2020-07-14 14:27:08614
Linux進(jìn)程權(quán)限的分析說(shuō)明
在linux下,關(guān)于文件權(quán)限,大部分人接觸比較多,也比較熟悉了解。但是對(duì)進(jìn)程權(quán)限一般知之甚少。本文總結(jié)一下linux系統(tǒng)下進(jìn)程權(quán)限問(wèn)題和現(xiàn)象。
2020-07-17 10:55:32765
Linux系統(tǒng)中的進(jìn)程之間通信
一、Linux 系統(tǒng)中的進(jìn)程之間通信(IPC) 二、基于 Socket 通信的優(yōu)點(diǎn) 三、MQTT 消息總線 四、嵌入式系統(tǒng)中如何利用 MQTT 消息總線 五、Mosquitto: 一個(gè)簡(jiǎn)單的測(cè)試代碼
2021-04-12 10:06:444362
linux查看端口被進(jìn)程占用的方法 Linux與windows的區(qū)別
,是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。 linux查看端口被進(jìn)程占用的方法 1、、lsof -i:端口號(hào) 2、netstat -tunlp|grep 端口號(hào) Linux
2021-08-22 14:23:092051
你們知道Linux的進(jìn)程是怎樣創(chuàng)建的嗎
Linux的進(jìn)程是怎樣創(chuàng)建的 Linux系統(tǒng)創(chuàng)建進(jìn)程都是由已存在的進(jìn)程創(chuàng)建的(除了0號(hào)進(jìn)程),被創(chuàng)建的進(jìn)程叫做子進(jìn)程,創(chuàng)建子進(jìn)程的進(jìn)程就做父進(jìn)程。這句話是不是有點(diǎn)熟悉,沒(méi)錯(cuò),Linux進(jìn)程串起來(lái)也是
2021-11-09 10:46:412943
Linux進(jìn)程間通信方法之管道
上文中我們介紹了進(jìn)程間通信的方法之一:信號(hào),本文將繼續(xù)介紹另一種進(jìn)程間通信的方法,即管道。管道是Linux中使用shell經(jīng)常用到的一個(gè)技術(shù),本文將深入剖析管道的實(shí)現(xiàn)和運(yùn)行邏輯。
2022-05-14 15:47:341537
如何在Linux使用ps/pstree/top命令查看進(jìn)程
在Linux 程序的運(yùn)行實(shí)例稱為進(jìn)程。有時(shí)在Linux工作時(shí),您可能需要找出當(dāng)前正在運(yùn)行的進(jìn)程。
2022-12-05 17:07:301391
愛(ài)立信的5G方法論
第29屆中國(guó)國(guó)際廣播電視信息網(wǎng)絡(luò)展覽會(huì)(CCBN)在北京首鋼園會(huì)議中心開啟,愛(ài)立信中國(guó)區(qū)技術(shù)部副總經(jīng)理張永濤、愛(ài)立信東北亞無(wú)線網(wǎng)絡(luò)產(chǎn)品部硬件總監(jiān)唐黎明,就“釋放5G潛能”、“打造綠色5G”,分享了愛(ài)立信的方法論和最新實(shí)踐。
2023-04-23 14:27:351835
深度剖析Linux中進(jìn)程控制(上)
在Linux中,fork函數(shù)是非常重要的函數(shù),它從已存在進(jìn)程中創(chuàng)建一個(gè)新進(jìn)程。新進(jìn)程為子進(jìn)程,而原進(jìn)程為父進(jìn)程。
返回值:
在子進(jìn)程中返回0,父進(jìn)程中返回子進(jìn)程的PID
2023-05-12 10:49:41302
深度剖析Linux中進(jìn)程控制(下)
在Linux中,fork函數(shù)是非常重要的函數(shù),它從已存在進(jìn)程中創(chuàng)建一個(gè)新進(jìn)程。新進(jìn)程為子進(jìn)程,而原進(jìn)程為父進(jìn)程。
返回值:
在子進(jìn)程中返回0,父進(jìn)程中返回子進(jìn)程的PID
2023-05-12 10:49:50300
linux中防止運(yùn)行程序退出的幾種執(zhí)行方法
其背后的主要原因在于上述的相關(guān)操作,shell默認(rèn)會(huì)發(fā)送中斷信號(hào)給該終端session關(guān)聯(lián)的進(jìn)程,從而導(dǎo)致進(jìn)程跟隨終端退出,為了弄清這個(gè)問(wèn)題我們首先要了解兩種中斷信號(hào):
2023-07-03 11:37:001374
linux下開發(fā)避免僵尸進(jìn)程的方法
(進(jìn)程ID,退出狀態(tài),占用的資源等等),你可能會(huì)問(wèn),為什么這么麻煩,直接釋放完資源不就行了嗎?這是因?yàn)橛袝r(shí)它的父進(jìn)程想了解它的退出狀態(tài)。在子進(jìn)程退出但還未被其父進(jìn)程“收尸”之前,該子進(jìn)程就是僵死進(jìn)程,或者僵尸進(jìn)程。如果父進(jìn)程先于子進(jìn)程
2023-11-11 16:38:05458
linux怎么保存退出vim
在Linux系統(tǒng)中,使用vim作為編輯器是非常常見(jiàn)的。vim是一個(gè)強(qiáng)大的文本編輯器,擁有豐富的功能和快捷鍵。保存并退出vim可以通過(guò)以下步驟完成: 打開vim編輯器:在Linux命令行中輸入 vim
2023-11-27 14:19:462129
linux查看weblogic進(jìn)程
在Linux操作系統(tǒng)中,WebLogic是一種常用的Java應(yīng)用服務(wù)器,用于部署和管理企業(yè)級(jí)Java應(yīng)用程序。為了確保WebLogic服務(wù)器正常運(yùn)行,有時(shí)我們需要查看WebLogic進(jìn)程以了解其狀態(tài)
2023-12-05 16:07:33573
淺談Linux的進(jìn)程
()); }// printf("pid is :%d,current pid is:%dn",pid,getpid()); return 0;}~ 結(jié)果: ? ? 結(jié)果: ? ? ? 二、進(jìn)程退出
2024-01-28 15:54:2180
評(píng)論
查看更多