国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux:進(jìn)程等待究竟是什么?如何解決子進(jìn)程僵尸所帶來(lái)的內(nèi)存泄漏問(wèn)題?

這篇具有很好參考價(jià)值的文章主要介紹了Linux:進(jìn)程等待究竟是什么?如何解決子進(jìn)程僵尸所帶來(lái)的內(nèi)存泄漏問(wèn)題?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、進(jìn)程等待的概念

?進(jìn)程等待通常是指:父進(jìn)程通過(guò)wait()/waitpid()的方式,讓父進(jìn)程對(duì)子進(jìn)程進(jìn)行資源回收的等待過(guò)程??!

二、進(jìn)程等待存在的意義

?進(jìn)程等待通常是為了解決以下兩種情況:

  1. 解決子進(jìn)程僵尸所帶來(lái)的內(nèi)存泄漏問(wèn)題,對(duì)僵尸子進(jìn)程進(jìn)行資源回收! 原因在于當(dāng)子進(jìn)程僵尸后,便“刀槍不入”了。即使是操作系統(tǒng)也沒(méi)法對(duì)僵尸進(jìn)程進(jìn)行資源回收,進(jìn)而導(dǎo)致內(nèi)存泄漏問(wèn)題。
  2. 讓父進(jìn)程獲得子進(jìn)程運(yùn)行結(jié)果(代碼運(yùn)行正常結(jié)果正確、代碼運(yùn)行正常結(jié)果錯(cuò)誤、代碼異常)。父進(jìn)程創(chuàng)建子進(jìn)程,通常是希望子進(jìn)程幫父進(jìn)程執(zhí)行某些任務(wù)。但子進(jìn)程任務(wù)執(zhí)行的如何,父進(jìn)程需要得到反饋。此時(shí)父進(jìn)程可以通過(guò)進(jìn)程等待的方式來(lái)獲取子進(jìn)程的退出信息(退出碼和退出信號(hào))。

三、如何進(jìn)行進(jìn)程等待

下面依次介紹進(jìn)程等待所需調(diào)用的接口:wait()/waitpid()。

3.1 wait()是實(shí)現(xiàn)進(jìn)程等待

1、wait()原型

#include <sys/types.h>
#include <sys/wait.h>

pid_t wait(int *status);
  1. 返回值:如果成功返回被等待進(jìn)程的pid,否則返回-1.
  2. 參數(shù):ststus為輸出型參數(shù),獲取子進(jìn)程的退出信息,由操作系統(tǒng)自動(dòng)填充。(后續(xù)會(huì)單獨(dú)詳細(xì)介紹,這里我們暫且不關(guān)心該參數(shù),設(shè)為NULL)
  3. wait()用于等待任意進(jìn)程,而waitpid則可以等待任意進(jìn)程!!

2. 驗(yàn)證wait()能回收僵尸子進(jìn)程的空間

?下面這樣一段代碼:fork()創(chuàng)建子進(jìn)程,讓子進(jìn)程運(yùn)行約5秒后退出但父進(jìn)程不退出。此時(shí)子進(jìn)程變?yōu)榻┦M(jìn)程,進(jìn)程狀態(tài)為Z。此時(shí)調(diào)用父進(jìn)程調(diào)用wait()接口回收僵尸子進(jìn)程的資源空間。

【源代碼】:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

void worker()
{
    int cnt = 5;
    while(cnt)
    {
        printf("I am child process, pid:%d, ppid:%d, cnt:%d\n", getpid(), getppid(), cnt--);
        sleep(1);
    }
}

int main()
{
    pid_t id = fork();
    if(id == 0)
    {
        //child
        worker();
        exit(0);  //子進(jìn)程執(zhí)行完worker()后直接退出,變成僵尸狀態(tài)  
    }    
    else{
        //parent    
        sleep(10);    
        pid_t rid = wait(NULL);//對(duì)子進(jìn)程進(jìn)行回收                                                                                       
        if(rid == id)    
        {   
            printf("child process being recyceled sucess!, pid:%d, rid:%d\n", getpid(), rid);    
        }
        sleep(3);
    }
    return 0;
}

【運(yùn)行結(jié)果】:
Linux:進(jìn)程等待究竟是什么?如何解決子進(jìn)程僵尸所帶來(lái)的內(nèi)存泄漏問(wèn)題?,Linux經(jīng)典收錄,linux,網(wǎng)絡(luò),運(yùn)維,進(jìn)程等待,內(nèi)存泄漏

?我們觀察左邊監(jiān)視腳本發(fā)現(xiàn),子進(jìn)程在執(zhí)行5次代碼后退出,進(jìn)程狀態(tài)變?yōu)?code>Z。一段時(shí)間后,父進(jìn)程調(diào)用wait()函數(shù)對(duì)子進(jìn)程進(jìn)行回收,子進(jìn)程消失。即父進(jìn)程通過(guò)wait()實(shí)現(xiàn)了對(duì)子進(jìn)程的回收??!

tips:

  1. 父進(jìn)程調(diào)用wait()后,如果子進(jìn)程沒(méi)有退出,父進(jìn)程會(huì)在wait上發(fā)生進(jìn)程阻塞。直到子進(jìn)程僵尸,wait自動(dòng)回收后,返回被回收的子進(jìn)程pid。
  2. 對(duì)于多個(gè)進(jìn)程來(lái)說(shuō),誰(shuí)先被調(diào)度是未知的,由內(nèi)核調(diào)度算法決定。但可以肯定的是,父進(jìn)程一定是最后退出的!

3.2 waitpid()實(shí)現(xiàn)進(jìn)程等待

1、系統(tǒng)調(diào)用接口waitpid()原型

#include <sys/types.h>
#include <sys/wait.h>

pid_t waitpid(pid_t pid, int *status, int options);
  1. 參數(shù)pid: 如果pid=-1,等待任意進(jìn)程,和wait效果一樣。如果pid>0,等待進(jìn)程ID和pid值相等的子進(jìn)程!
  2. 參數(shù)status:子進(jìn)程的退出信息。status為NULL,表示不關(guān)心子進(jìn)程的退出狀態(tài)信息,否則操作系統(tǒng)會(huì)將子進(jìn)程的退出碼和錯(cuò)誤碼相關(guān)信息寫入該參數(shù)中。(后續(xù)具體介紹其實(shí)現(xiàn)機(jī)制)
  3. 參數(shù)options: 為0表示阻塞等待。options除了0外,還可以被設(shè)置為WNOHANG,此時(shí)表示父進(jìn)程以非阻塞方式進(jìn)行等待(非阻塞 + 輪詢方案)。
  4. 返回值:當(dāng)正常退出時(shí),waitpid返回收集到的子進(jìn)程ID;如果進(jìn)程異常,返回-1,此時(shí)errno會(huì)被設(shè)置為對(duì)于的錯(cuò)誤碼;如果進(jìn)程采用非阻塞輪詢方案,即將options設(shè)置為WNOHANG,如果子進(jìn)程waitpid收集到的子進(jìn)程沒(méi)有退出,此時(shí)返回0??!

四、獲取子進(jìn)程status實(shí)現(xiàn)機(jī)制

?在wait()/waitpid()中,均存在參數(shù)status,該參數(shù)是一個(gè)輸出型參數(shù),由操作系統(tǒng)自動(dòng)填充。如果該參數(shù)被設(shè)為NULL,表示不關(guān)心子進(jìn)程的退出信息;否則OS會(huì)通過(guò)status的值,來(lái)將子進(jìn)程相關(guān)退出信息返回給父進(jìn)程?。?/p>

status如何保存相關(guān)信息?

?status是int類型,32bit。這里我們僅研究低16位??!
?其中status的最低7位保存子進(jìn)程的退出信號(hào)(exit signal);第8位表示的是core dump標(biāo)志;9~16位表示的是進(jìn)程的退出碼(exit code)

Linux:進(jìn)程等待究竟是什么?如何解決子進(jìn)程僵尸所帶來(lái)的內(nèi)存泄漏問(wèn)題?,Linux經(jīng)典收錄,linux,網(wǎng)絡(luò),運(yùn)維,進(jìn)程等待,內(nèi)存泄漏
status中保存信息驗(yàn)證

?下面我們來(lái)做實(shí)驗(yàn):我們通過(guò)fork()創(chuàng)建出子進(jìn)程,然后讓子進(jìn)程運(yùn)行約3秒;此時(shí)父進(jìn)程通過(guò)waitpid以阻塞方式對(duì)子進(jìn)程進(jìn)行等待回收。然后通過(guò)位運(yùn)算對(duì)status進(jìn)行處理,獲取status中的子進(jìn)程退出碼和退出信號(hào)。

【源代碼】:

#include <stdio.h>    
#include <unistd.h>       
#include <sys/types.h>    
#include <sys/wait.h>    
    
int main()    
{    
    int status = 0;    
    pid_t id = fork();    
    if(id == 0)    
    {    
        int cnt = 3;    
        while(cnt)    
        {    
            printf("I am child, cnt:%d\n", cnt--);    
            sleep(1);    
        }    
        exit(3);    
    }    
    else if(id > 0)    
    {    
        pid_t rid = waitpid(id, &status, 0);//以阻塞方式等待    
        printf("I am parent, pid:%d, rid:%d, status:%d, exit code:%d, signal:%d\n", getpid(), rid, status, (status>>8)&0xFF, status&0x7F);               
    }    
    return 0;    
}  

【運(yùn)行結(jié)果】:
Linux:進(jìn)程等待究竟是什么?如何解決子進(jìn)程僵尸所帶來(lái)的內(nèi)存泄漏問(wèn)題?,Linux經(jīng)典收錄,linux,網(wǎng)絡(luò),運(yùn)維,進(jìn)程等待,內(nèi)存泄漏
?我們發(fā)現(xiàn)status變量中確實(shí)保存著子進(jìn)程的退出碼和退出信號(hào)等相關(guān)信息。

在系統(tǒng)中提供了一些宏函數(shù),用于直接獲取進(jìn)程的相關(guān)退出信息,具體如下:

  • WIFEXITED(status): 若為正常終止子進(jìn)程返回的狀態(tài),則為真。(查看進(jìn)程是否是正常退出)
  • WEXITSTATUS(status): 若WIFEXITED非零,提取子進(jìn)程退出碼。(查看進(jìn)程的退出碼)

父進(jìn)程如何得知子進(jìn)程的退出信息(底層執(zhí)行流程)

?在子進(jìn)程pcb中存在如下幾個(gè)變量,分別用于保存進(jìn)程的狀態(tài)、退出碼、退出信號(hào):(Linux為例)

strucr task_struct{
	int exit_state;	//退出狀態(tài)
	int exit_code;	//退出碼
	int exit_signal;//退出信號(hào)
}

?當(dāng)子進(jìn)程退出時(shí),操作系統(tǒng)會(huì)將子進(jìn)程的退出碼和退出信號(hào)保存到子進(jìn)程PCB的exit_code變量和exit_signal變量中。
?而父進(jìn)程通過(guò)waitpid/wait等待子進(jìn)程時(shí),OS會(huì)將子進(jìn)程PCB中的退出碼和退出信號(hào)通過(guò)組合放入status變量中,并將子進(jìn)程的狀態(tài)從Z改成S?。?br> ?此時(shí),父進(jìn)程便可通過(guò)status來(lái)獲取子進(jìn)程退出信息,子進(jìn)程可以被操作系統(tǒng)回收。

五、阻塞等待和非阻塞等待

?前面我們介紹waitpis接口時(shí)提到過(guò),options參數(shù)設(shè)為0,表示父進(jìn)程進(jìn)行的時(shí)阻塞等待;設(shè)為WNOHANG表示父進(jìn)程以==(非阻塞方式),即非阻塞輪詢方式==進(jìn)行進(jìn)程等待。

?那兩種等待方式究竟是什么?有什么區(qū)別呢?

5.1 阻塞等待

?父進(jìn)程以阻塞方式進(jìn)行等待和普通阻塞進(jìn)程一樣。
?當(dāng)父進(jìn)程調(diào)用waitpid接口等待子進(jìn)程時(shí),如果此時(shí)子進(jìn)程沒(méi)有退出,操作系統(tǒng)會(huì)將父進(jìn)程設(shè)置為阻塞進(jìn)程,然后將父進(jìn)程的PCB鏈入到子進(jìn)程的等待隊(duì)列中。一旦子進(jìn)程退出,操作系統(tǒng)會(huì)將父進(jìn)程PCB重新加載到運(yùn)行隊(duì)列中等待調(diào)度!

5.2 非阻塞等待(非阻塞 + 輪詢方案)

? 非阻塞等待是指父進(jìn)程在等待子進(jìn)程時(shí)發(fā)現(xiàn)子進(jìn)程還未退出,此時(shí)父進(jìn)程和阻塞等待一樣一直在"原地等地子進(jìn)程運(yùn)行結(jié)束"。父進(jìn)程會(huì)執(zhí)行一些其他任務(wù),并每隔一段時(shí)間查看子進(jìn)程是否退出。一旦子進(jìn)程退出后,父進(jìn)程才會(huì)開(kāi)始執(zhí)行后續(xù)程序。
?非阻塞等待的好處就是讓父進(jìn)程在等待時(shí),可以做一些自己占據(jù)時(shí)間不多的任務(wù)??!

六、非阻塞輪詢方案示例演示

?下面我們通過(guò)fork創(chuàng)建子進(jìn)程。然后讓子進(jìn)程做一些工作(打印輸出一些信息,整個(gè)過(guò)程約10s),此時(shí)父進(jìn)程通過(guò)waitpid接口進(jìn)行非阻塞輪詢方案進(jìn)行等待。在等待過(guò)程中,我們讓父進(jìn)程做一些自己的“小任務(wù)”(這些小任務(wù),博主同樣采用輸出信息代替,各位可根據(jù)實(shí)際情況修改)

【源代碼】:

輪詢時(shí),父進(jìn)程執(zhí)行任務(wù):
?博主將任務(wù)簡(jiǎn)化為輸出一些信息,各位可自行更改任務(wù)

void download()
{
    printf("This download task is running!\n");
}

void writelog()
{
    printf("This write log task is running!\n");
}

void printinfo()
{
    printf("This print info task is running!\n");
}

大致框架,父進(jìn)程和子進(jìn)程執(zhí)行任務(wù):

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>


#define TASK_NUM 5
void worker(int cnt)                                                                                                                                     
{
    printf("I am child, pid:%d, cnt:%d\n", getpid(), cnt);
}

int main()
{
	//下面5行模擬父進(jìn)程的任務(wù)被加載好了,方便父進(jìn)程等待子進(jìn)程時(shí)被執(zhí)行
    task tasks[TASK_NUM];
    Init(tasks, TASK_NUM);//初始化
    taskadd(tasks, download); //加載任務(wù)
    taskadd(tasks, writelog); 
    taskadd(tasks, printinfo); 

    pid_t id = fork();
    if(id == 0)
    {//child
         int cnt = 5;
         while(cnt)
         {
             worker(cnt--);
             sleep(1);
         }
         exit(3);
    }
                                                                                                                                                        
    //parent
    while(1)
    {
         int status = 0;
         pid_t rid = waitpid(id, &status, WNOHANG);
         if(rid > 0)
         {//子進(jìn)程正常退出
              printf("wait sucess!\n, pid:%d, rid:%d, exit code:%d, signal:%d\n",getpid(), rid, (status>>8)&0xFF, status&0x7F);
              break;
         }
         else if(rid == 0)
         {//父進(jìn)程等待成功,但子進(jìn)程沒(méi)有退出。父進(jìn)程開(kāi)始做自己的小任務(wù),一段時(shí)間后在查詢子進(jìn)程是否退出
             printf("------------------------------------------------\n");
             printf("wait sucess, but chils alive, wait again!\n");
             executeTask(tasks, 3);
             printf("------------------------------------------------\n");
         }
         else
         {//子進(jìn)程退出異常
             printf("wait failed!\n");
             break;
         }
         sleep(1);
    }
    return 0;
}

父進(jìn)程加載任務(wù)代碼:

void Init(task tasks[], int num)
{
    for(int i = 0; i < num; i++)
    {
        tasks[i] = NULL;
    }                                                                                                                                                    
}

int taskadd(task tasks[], task t)
{
    for(int i = 0; i < TASK_NUM; i++)
    {
        if(tasks[i] == NULL)
        {
            tasks[i] = t;
            return 1;//增加任務(wù)成功
        }
    }
    return 0;//增加任務(wù)失敗
}

void executeTask(task tasks[], int num)
{
    for(int i = 0; i < num; i++)
    {
        tasks[i]();
    }
}

運(yùn)行結(jié)果:
Linux:進(jìn)程等待究竟是什么?如何解決子進(jìn)程僵尸所帶來(lái)的內(nèi)存泄漏問(wèn)題?,Linux經(jīng)典收錄,linux,網(wǎng)絡(luò),運(yùn)維,進(jìn)程等待,內(nèi)存泄漏文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-853195.html

到了這里,關(guān)于Linux:進(jìn)程等待究竟是什么?如何解決子進(jìn)程僵尸所帶來(lái)的內(nèi)存泄漏問(wèn)題?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【linux進(jìn)程控制(二)】進(jìn)程等待--父進(jìn)程是如何等待子進(jìn)程死亡的?

    【linux進(jìn)程控制(二)】進(jìn)程等待--父進(jìn)程是如何等待子進(jìn)程死亡的?

    ??博主CSDN主頁(yè):杭電碼農(nóng)-NEO?? ? ?專欄分類:Linux從入門到精通? ? ??代碼倉(cāng)庫(kù):NEO的學(xué)習(xí)日記?? ? ??關(guān)注我??帶你學(xué)更多操作系統(tǒng)知識(shí) ? ???? ) 控制一個(gè)進(jìn)程包括如何創(chuàng)建它,如何 終止它,并且如何回收它的資源! 本章重點(diǎn): 本篇文章著重講解進(jìn)程等待的必要性 ,以及

    2024年02月05日
    瀏覽(22)
  • 『Linux從入門到精通』第 ? 期 - 僵尸進(jìn)程?孤兒進(jìn)程?為什么他有如此慘烈的身世...

    『Linux從入門到精通』第 ? 期 - 僵尸進(jìn)程?孤兒進(jìn)程?為什么他有如此慘烈的身世...

    ??作者簡(jiǎn)介: 花想云 ,在讀本科生一枚,C/C++領(lǐng)域新星創(chuàng)作者,新星計(jì)劃導(dǎo)師,阿里云專家博主,CSDN內(nèi)容合伙人…致力于 C/C++、Linux 學(xué)習(xí)。 ?? 專欄簡(jiǎn)介:本文收錄于 Linux從入門到精通 ,本專欄主要內(nèi)容為本專欄主要內(nèi)容為L(zhǎng)inux的系統(tǒng)性學(xué)習(xí),專為小白打造的文章專欄。

    2024年02月16日
    瀏覽(20)
  • 『Linux從入門到精通』第 ? 期 - 那年我手執(zhí)『wait』桃木劍,輕松解決僵尸進(jìn)程~

    『Linux從入門到精通』第 ? 期 - 那年我手執(zhí)『wait』桃木劍,輕松解決僵尸進(jìn)程~

    ??作者簡(jiǎn)介: 花想云 ,在讀本科生一枚,C/C++領(lǐng)域新星創(chuàng)作者,新星計(jì)劃導(dǎo)師,阿里云專家博主,CSDN內(nèi)容合伙人…致力于 C/C++、Linux 學(xué)習(xí)。 ?? 專欄簡(jiǎn)介:本文收錄于 Linux從入門到精通 ,本專欄主要內(nèi)容為本專欄主要內(nèi)容為L(zhǎng)inux的系統(tǒng)性學(xué)習(xí),專為小白打造的文章專欄。

    2024年02月16日
    瀏覽(14)
  • 【Linux】探索Linux進(jìn)程狀態(tài) | 僵尸進(jìn)程 | 孤兒進(jìn)程

    【Linux】探索Linux進(jìn)程狀態(tài) | 僵尸進(jìn)程 | 孤兒進(jìn)程

    最近,我發(fā)現(xiàn)了一個(gè)超級(jí)強(qiáng)大的人工智能學(xué)習(xí)網(wǎng)站。它以通俗易懂的方式呈現(xiàn)復(fù)雜的概念,而且內(nèi)容風(fēng)趣幽默。我覺(jué)得它對(duì)大家可能會(huì)有所幫助,所以我在此分享。點(diǎn)擊這里跳轉(zhuǎn)到網(wǎng)站。 ??博客主頁(yè):小智_x0___0x_ ??歡迎關(guān)注:??點(diǎn)贊??收藏??留言 ??系列專欄:Linux入門

    2024年02月05日
    瀏覽(24)
  • 僵尸進(jìn)程?孤兒進(jìn)程?為什么他有如此慘烈的身世...

    僵尸進(jìn)程?孤兒進(jìn)程?為什么他有如此慘烈的身世...

    ??作者簡(jiǎn)介: 花想云 ,在讀本科生一枚,C/C++領(lǐng)域新星創(chuàng)作者,新星計(jì)劃導(dǎo)師,阿里云專家博主,CSDN內(nèi)容合伙人…致力于 C/C++、Linux 學(xué)習(xí)。 ?? 專欄簡(jiǎn)介:本文收錄于 Linux從入門到精通 ,本專欄主要內(nèi)容為本專欄主要內(nèi)容為L(zhǎng)inux的系統(tǒng)性學(xué)習(xí),專為小白打造的文章專欄。

    2024年02月05日
    瀏覽(96)
  • 探索Linux下進(jìn)程狀態(tài) | 僵尸進(jìn)程 | 孤兒進(jìn)程

    探索Linux下進(jìn)程狀態(tài) | 僵尸進(jìn)程 | 孤兒進(jìn)程

    任何進(jìn)程在運(yùn)行時(shí)都會(huì)有自己的狀態(tài) 下面的狀態(tài)在kernel源代碼里定義: 常見(jiàn)的幾種狀態(tài): R運(yùn)行狀態(tài)(running) : 并不意味著進(jìn)程一定在運(yùn)行中,它表明進(jìn)程要么是在運(yùn)行中要么在運(yùn)行隊(duì)列里。 S睡眠狀態(tài)(sleeping): 意味著進(jìn)程在等待事件完成(這里的睡眠有時(shí)候也叫做可中斷

    2024年04月17日
    瀏覽(20)
  • 【Linux】詳解進(jìn)程狀態(tài)之僵尸進(jìn)程——孤兒進(jìn)程

    【Linux】詳解進(jìn)程狀態(tài)之僵尸進(jìn)程——孤兒進(jìn)程

    目錄 ??專欄導(dǎo)讀 ??什么是進(jìn)程 ?什么是PCB?? ??查看進(jìn)程? ??如何通過(guò)系統(tǒng)調(diào)用查看進(jìn)程PID ??fork ??認(rèn)識(shí)進(jìn)程狀態(tài) ??查看進(jìn)程狀態(tài)? ??R狀態(tài) ??例如: ??S狀態(tài)? ??D狀態(tài)? ??T狀態(tài) ??t狀態(tài): ??X狀態(tài)? ??Z狀態(tài) ?僵尸進(jìn)程 ?僵尸進(jìn)程的危害? ??孤兒進(jìn)程 ??作

    2024年02月13日
    瀏覽(23)
  • Linux—進(jìn)程狀態(tài)、僵尸進(jìn)程、孤獨(dú)進(jìn)程、優(yōu)先級(jí)

    Linux—進(jìn)程狀態(tài)、僵尸進(jìn)程、孤獨(dú)進(jìn)程、優(yōu)先級(jí)

    ??北塵_ :個(gè)人主頁(yè) ??個(gè)人專欄 :《Linux操作系統(tǒng)》《經(jīng)典算法試題 》《C++》 《數(shù)據(jù)結(jié)構(gòu)與算法》 ??走在路上,不忘來(lái)時(shí)的初心 為了弄明白正在運(yùn)行的進(jìn)程是什么意思,我們需要知道進(jìn)程的不同狀態(tài)。一個(gè)進(jìn)程可以有幾個(gè)狀態(tài)(在 Linux內(nèi)核里,進(jìn)程有時(shí)候也叫做任務(wù))

    2024年02月05日
    瀏覽(23)
  • 【Linux深入剖析】進(jìn)程狀態(tài)---進(jìn)程僵尸與孤兒

    【Linux深入剖析】進(jìn)程狀態(tài)---進(jìn)程僵尸與孤兒

    ?? 作者簡(jiǎn)介 :RO-BERRY ?? 學(xué)習(xí)方向:致力于C、C++、數(shù)據(jù)結(jié)構(gòu)、TCP/IP、數(shù)據(jù)庫(kù)等等一系列知識(shí) ?? 日后方向 : 偏向于CPP開(kāi)發(fā)以及大數(shù)據(jù)方向,歡迎各位關(guān)注,謝謝各位的支持 進(jìn)程 = taskk_stuct + 可執(zhí)行程序 進(jìn)程不是一直在運(yùn)行的 進(jìn)程放在cpu上也不會(huì)一直運(yùn)行的 它可能在等待某

    2024年03月18日
    瀏覽(24)
  • 【Linux取經(jīng)路】探索進(jìn)程狀態(tài)之僵尸進(jìn)程 | 孤兒進(jìn)程

    【Linux取經(jīng)路】探索進(jìn)程狀態(tài)之僵尸進(jìn)程 | 孤兒進(jìn)程

    進(jìn)程狀態(tài)是指在操作系統(tǒng)中,一個(gè)進(jìn)程所處的不同運(yùn)行狀態(tài),進(jìn)程狀態(tài)就決定了該進(jìn)程接下來(lái)要執(zhí)行什么任務(wù)。常見(jiàn)的進(jìn)程狀態(tài)有以下幾種: 新建狀態(tài) :進(jìn)程被創(chuàng)建但還沒(méi)有被操作系統(tǒng)接受和分配資源。 就緒狀態(tài) :進(jìn)程已經(jīng)獲得了所需的資源,并等待被調(diào)度執(zhí)行。 運(yùn)行狀

    2024年02月12日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包