在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > Linux 之exit() 進程退出函數(shù)

            Linux 之exit() 進程退出函數(shù)

            發(fā)布人:電子禪石 時間:2022-03-29 來源:工程師 發(fā)布文章

            進程的退出

            linux下進程數(shù)量太多會導(dǎo)致系統(tǒng)崩潰,在使用完一個進程之后要及時終止它。

            進程退出一般有三種方法:

            1、在main函數(shù)中使用 return關(guān)鍵字 ,使用 return 后系統(tǒng)會調(diào)用 exit()函數(shù)來終止進程。

            2、手動調(diào)用 exit() 來終止進程。

            3、調(diào)用 _exit() 來終止進程。

            exit() 和 _exit() 函數(shù)

            頭文件


            #include<unistd.h>

            #include<stdlib.h>

            1

            2

            原型


            void _exit(int status);

            void exit(int status);

            1

            2

            _exit()

            os立刻把管理內(nèi)存的結(jié)構(gòu)體、虛擬內(nèi)存釋放掉。

            exit()

            不會馬上干掉結(jié)構(gòu)體,先看先看當(dāng)前進程有沒有文件緩存區(qū),若有則會先處理緩存區(qū)中的數(shù)據(jù),然后銷毀結(jié)構(gòu)體。


            #include<stdio.h>

            #include<stdlib.h>

            #include<unistd.h>


            int main()

            {

            pid_t res;

            res = fork();

            if(res == -1)

            {

            printf("fork err\r\n");

            }

            if(res == 0)

            {

            //不加回車換行符,讓輸出的字符串?dāng)?shù)據(jù)保留在io緩存區(qū)里面

            printf("son");

            //退出狀態(tài)設(shè)置為0,表示正常退出。

            _exit(0);

            }

            else if(res > 0)

            {

            printf("parent");

            exit(0);

            }

            }



            1

            2

            3

            4

            5

            6

            7

            8

            9

            10

            11

            12

            13

            14

            15

            16

            17

            18

            19

            20

            21

            22

            23

            24

            25

            26

            27

            編譯后執(zhí)行結(jié)果


            jl@jl-virtual-machine:~/test$ ./a.out 

            parentjl@jl-virtual-machine:~/test$ 

            jl@jl-virtual-machine:~/test$ 

            1

            2

            3

            注意第二行開頭的parent,因為在父進程中用的是 exit() 函數(shù),在進程退出前會先處理完緩存區(qū)中的數(shù)據(jù),所以緩存區(qū)中滯留的parent在推出前被打印出來。


            使用\r\n輸出字符串則會被立即打印。


            補充

            C語言中的exit()函數(shù)與 return 對比

            ————————————————


            原文鏈接:https://blog.csdn.net/engineer0/article/details/109213577


            *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


            關(guān)鍵詞: linux

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉