linux父進程循環,LINUX C 父進程建立多個子進程循環非堵塞回收列子

下面 代碼主要用于復習,留于此

點擊(此處)折疊或打開

/*************************************************************************

> File Name: fork5.c

> Author: gaopeng QQ:22389860 all right reserved

> Mail: gaopp_200217@163.com

> Created Time: Sun 02 Jul 2017 02:39:16 AM CST

************************************************************************/

#include

#include

#include

#define MAXPNUM 3

typedef struct handler

{

int* pidarr;

int childnum;

} HANDLER;

int main(void)

{

int i = 0;

int m = 0;

int psre = 0;

HANDLER pidhd;

pidhd.pidarr = (int*)calloc(MAXPNUM+1,sizeof(int));//初始化內存

pidhd.childnum = 0;//初始化進程數量

for(i = 0 ;i

{

m = fork();

if(m == –1)

{

perror(“fork:”);

}

else if( m == 0 )

{

printf(“CHILD: I is child process pid: %d parent process pid: %d n”,getpid(),getppid());

sleep(60);

break;

}

else

{

sleep(1);

pidhd.childnum ++;//進程num+1

*(pidhd.pidarr+i) = m;//指針移動+1

printf(“PARENT: I is parent process pid: %d i fock chlid pid: %d n”,getpid(),m);

}

}

if(i == MAXPNUM)//一定為父進程

{

for(i=0;*(pidhd.pidarr+i);i++)

{

printf(“child process is pid:%dn”,*(pidhd.pidarr+i));

}

}

if(i == MAXPNUM)//一定為父進程

{

printf(“parent pid %d fock child process number is %d finsh!! n”,getpid(),pidhd.childnum);

while(pidhd.childnum > 0)

{

for(i = 0;i< MAXPNUM ;i++) //WNOHANG非堵塞循環回收

{

if(*(pidhd.pidarr+i) != 0 && waitpid(*(pidhd.pidarr+i),&psre,WNOHANG) > 0 )

{

if (WIFEXITED(psre))//是否正常退出獲取其退出值

printf(“child %d exit %dn”, *(pidhd.pidarr+i), WEXITSTATUS(psre));

else if (WIFSIGNALED(psre))//是否異常退出信號終止獲得信號值

printf(“child %d cancel signal %dn”, *(pidhd.pidarr+i), WTERMSIG(psre));

*(pidhd.pidarr+i) == 0;

pidhd.childnum––;

break;

}

}

}

free(pidhd.pidarr);

}

return 1;//子進程父進程均已return 1 退出

}

輸出如下可以捕獲子線程由于kill 發信號終止:

▽aopeng@bogon:~/linux0411/process$ ./a.out

CHILD: I is child process pid: 2588 parent process pid: 2587

PARENT: I is parent process pid: 2587 i fock chlid pid: 2588

CHILD: I is child process pid: 2589 parent process pid: 2587

PARENT: I is parent process pid: 2587 i fock chlid pid: 2589

CHILD: I is child process pid: 2590 parent process pid: 2587

PARENT: I is parent process pid: 2587 i fock chlid pid: 2590

child process is pid:2588

child process is pid:2589

child process is pid:2590

parent pid 2587 fock child process number is 3 finsh!!

child 2588 cancel signal 9

child 2589 cancel signal 15

child 2590 cancel signal 11

可以捕獲正常終止

gaopeng@bogon:~/linux0411/process$ ./a.out

CHILD: I is child process pid: 2597 parent process pid: 2596

PARENT: I is parent process pid: 2596 i fock chlid pid: 2597

CHILD: I is child process pid: 2598 parent process pid: 2596

PARENT: I is parent process pid: 2596 i fock chlid pid: 2598

CHILD: I is child process pid: 2599 parent process pid: 2596

PARENT: I is parent process pid: 2596 i fock chlid pid: 2599

child process is pid:2597

child process is pid:2598

child process is pid:2599

parent pid 2596 fock child process number is 3 finsh!!

child 2599 cancel signal 1

child 2597 exit 1

child 2598 exit 1

來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/7728585/viewspace-2140651/,如需轉載,請注明出處,否則將追究法律責任。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

服務器自動運行python_在虛擬主機中安裝了python程序,如何使它在服務器上自動運行?...

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":3,"count":3}]},"card":[{"des":"IP地理位置庫(GeoIP Databases)是對運營商分…

模擬測試

題解&#xff1a; 3道水題。。 1。生活大爆炸版剪刀石頭布 忘記怎么打f[5][5]{}這個了。。 然后發現里面啥都不加也可以 加的話要是{} 2.送禮物 雙向搜 有點卡常數。。 我沒寫dfs 寫了dp求多少&#xff08;好智障啊。。 訪問數組挺慢的所以應該速度差不多。。&#xff09; lowb…

javascript閉包_通過郵寄包裹解釋JavaScript閉包

javascript閉包by Kevin Kononenko凱文科諾年科(Kevin Kononenko) 通過郵寄包裹解釋JavaScript閉包 (JavaScript Closures Explained by Mailing a Package) 如果您以前寄過包裹或信件&#xff0c;那么您可以了解JavaScript中的閉包。 (If you have mailed a package or lette…

linux 加入ad 用ssh,使用samba驗證AD用戶,允許AD用戶登錄到linux

使用samba驗證AD用戶&#xff0c;允許AD用戶登錄到linux2007年06月26日 星期二 14:101、先把samba加入到AD域中2、在smb.conf中添加一行&#xff0c;讓登錄進來的用戶使用bashtemplate shell /bin/bash3、運行authconfig&#xff0c;在驗證中選擇 使用smb和kerberos,winbind驗…

體會日子

體會日子 開通了博客園&#xff0c; 日子要記錄一下。 以后要好好上進了。 posted on 2016-05-01 23:16 體會日子 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/yukunshi/p/5451485.html

selenium 難定位元素、時間插件

關于frame: 1. 如果網頁存在iframe的話&#xff0c;傳統的定位有時候找不到元素&#xff0c;需要切換frame&#xff1b; # 切換到leftFrame定位“測井設計” driver.switch_to_frame("leftFrame") driver.find_element_by_link_text(u"設計").click() # 切…

python kmeans聚類 對二維坐標點聚類_Kmeans均值聚類算法原理以及Python如何實現

第一步.隨機生成質心由于這是一個無監督學習的算法&#xff0c;因此我們首先在一個二維的坐標軸下隨機給定一堆點&#xff0c;并隨即給定兩個質心&#xff0c;我們這個算法的目的就是將這一堆點根據它們自身的坐標特征分為兩類&#xff0c;因此選取了兩個質心&#xff0c;什么時…

HDU 2544最短路dijkstra模板題

最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 33657 Accepted Submission(s): 14617Problem Description在每年的校賽里&#xff0c;全部進入決賽的同學都會獲得一件非常美麗的t-shirt。可是每當我們…

我為期一個月的GitHub的經驗教訓

by JS由JS 我為期一個月的GitHub的經驗教訓 (Lessons from my month-long GitHub commit streak) “I want to learn JavaScript. Like, really learn it. Like, truly understand it.” — me in November 2016“我想學習JavaScript。 喜歡&#xff0c;真正地學習它。 喜歡&a…

安裝itunes需要管理員身份_ITUNES無法安裝,提示沒有權限如何解決?

展開全部注意機器一定要登陸管理員系統&#xff0c;如果現在不是&#xff0c;可以注62616964757a686964616fe78988e69d8331333365646263銷&#xff0c;切換一下用戶。還有計算機不要有漏洞&#xff0c;如果有的話修復一下。打開開始運行,輸入regedit,點擊確認打開注冊表編輯器,…

vs2012新建項目產生的問題

當用vs新建web項目時遇到 只需下載一個vs2012的更新插件 http://download.microsoft.com/download/A/0/2/A02C37E0-77F7-448A-BD5C-F66AB1F78DBC/VS11-KB3002339.exe 點擊安裝更新即可. 轉載于:https://www.cnblogs.com/GreenLeaves/p/5452073.html

zoj4062 Plants vs. Zombies 二分+模擬(貪心的思維)

題目傳送門 題目大意&#xff1a;有n個植物排成一排&#xff0c;標號為1-n&#xff0c;每株植物有自己的生長速度ai&#xff0c;每對植物澆一次水&#xff0c;該株植物就長高ai&#xff0c;現在機器人從第0個格子出發&#xff0c;每次走一步&#xff0c;不能停留&#xff0c;每…

MyBatis注解模式批量insert方法

2019獨角獸企業重金招聘Python工程師標準>>> 方法一:script標簽方式 Insert("<script>insert into xxx (channelId,siteId) " "values " "<foreach collection\"list\" item\"item\" index\"index\&quo…

尚硅谷學費有住宿么_我在12個小時的住宿期間了解到的硅谷知識

尚硅谷學費有住宿么by Sahil Khoja由Sahil Khoja 我在12個小時的住宿期間了解到的硅谷知識 (What I learned about Silicon Valley during my 12 hour stay) #1 Unless you’re a designer or a developer, the billboards are pure gibberish.&#xff03;1除非您是設計師或開…

以下屬于linux文件系統認為的文件是,信息安全技術題庫:在Linux系統中,圖形文件、數據文件、文檔文件等都屬于()。...

相關題目與解析Linux中圖像文件屬于()。A、文本文件B、連接文件C、特殊文件D、二進制文件主要用于Linux系統中進程間相互傳遞數據。A&#xff0e;FIFO文件B&#xff0e;設備文件C&#xff0e;鏈接文件D&#xff0e;目錄文件關于Linux文件組織方式的說法中&#xff0c;(32)是錯誤…

關于eclipse中文注釋亂碼的問題

今天打開了一個以前的android項目&#xff0c;發現中文注釋都成亂碼啦&#xff01;&#xff01;&#xff01; 后來在網上找了一會解決方法&#xff0c;知道了中文的編碼大體是兩種&#xff1a;GBK(漢字內碼擴展規范)和UTF-8(8-bit Unicode Transformation Format)。 因此問題的…

園林系統優秀黨員推薦材料_園林綠化公司黨員先進個人事跡材料

第1頁共5頁三一文庫(www.31doc.com)〔園林綠化公司黨員先進個人事跡材料〕我于年月踏出校門來到建設公司。初到公司&#xff0c;我被分配到分公司卉豐園林綠化公司工作。我努力學習公司各項規章制度和相關業務知識&#xff0c;多了解樹木、綠化的有關情況。在此期間&#xff0c…

python入門(5)使用文件編輯器編寫代碼并保存執行

python入門&#xff08;5&#xff09;使用文件編輯器編寫代碼并保存執行 兩款文本編輯器&#xff1a; 一個是Sublime Text&#xff0c;免費使用&#xff0c;但是不付費會彈出提示框&#xff1a; 一個是Notepad&#xff0c;免費使用&#xff0c;有中文界面&#xff1a; 請注意&…

js 獲取時間戳的方法

(new Date()).valueOf()1541569364658(new Date()).getTime()1541569372623Number(new Date())1541569386622 // 2019年1月23日補充 *除以1000得到的是Unix時間戳 // Math.floor(new Date().getTime() / 1000), // 當天// (new Date(new Date().setHours(0, 0, 0, 0)) / 1000) …

agpl限制了開源_不要限制您的開源項目的潛力

agpl限制了開源by Julien Danjou通過朱利安丹喬(Julien Danjou) 不要限制您的開源項目的潛力 (Don’t limit your open source project’s potential) During the OpenStack summit a few weeks ago, I had the chance to talk to some people about my experience on running…