亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 5892 | 回復(fù): 12
打印 上一主題 下一主題

只退出子進(jìn)程,不退出主進(jìn)程時(shí),子進(jìn)程僵死! [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-04-15 13:34 |只看該作者 |倒序?yàn)g覽
如下代碼,目的的:退出子進(jìn)程后,不退出主進(jìn)程,主進(jìn)程還需要干其它活。
執(zhí)行下面代碼后,用ps看進(jìn)程信息時(shí),發(fā)現(xiàn)子進(jìn)程僵死了。如果退出主進(jìn)程,就沒有僵死的子進(jìn)程了。這是為什么呀?
這種情況下,應(yīng)該怎么正確退出子進(jìn)程?
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.     int n = 0;

  6.     pid_t pid;

  7.     pid = fork();

  8.     if(pid)
  9.     {
  10.         printf("This is father\n");
  11.     }else{
  12.         printf("This is child\n");
  13.        //do sth
  14.         return 0;
  15.     }
  16.     while(1)//do sth else;
  17.     return 0;
  18. }
復(fù)制代碼

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-04-15 19:09 |只看該作者
子進(jìn)程執(zhí)行完之后必須通過主進(jìn)程調(diào)用wait函數(shù)回收,否則就會僵死。主進(jìn)程退出了,子進(jìn)程的父進(jìn)程是pid 1的進(jìn)程,他會幫忙回收退出的進(jìn)程,所以不會僵死。
man wait,
man waitpid

論壇徽章:
1
天蝎座
日期:2013-12-06 18:23:58
3 [報(bào)告]
發(fā)表于 2012-04-15 20:48 |只看該作者
return 。。。這不是函數(shù)啊!進(jìn)程是這么退出的么????

論壇徽章:
1
白羊座
日期:2013-08-22 17:30:33
4 [報(bào)告]
發(fā)表于 2012-04-16 08:27 |只看該作者
回復(fù) 3# crazyhadoop
從main return,一個(gè)進(jìn)程結(jié)束這個(gè)應(yīng)該沒有問題,也可以用exit!

   

論壇徽章:
1
白羊座
日期:2013-08-22 17:30:33
5 [報(bào)告]
發(fā)表于 2012-04-16 08:29 |只看該作者
回復(fù) 1# hua9537
建議樓主去了解一下wait或者waitpid這兩個(gè)函數(shù)的作用!

   

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2012-04-16 12:37 |只看該作者
回復(fù) 3# crazyhadoop

也可以這么玩的。。。。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2012-04-16 18:44 |只看該作者
cjdao 發(fā)表于 2012-04-16 08:29
回復(fù) 1# hua9537
建議樓主去了解一下wait或者waitpid這兩個(gè)函數(shù)的作用!


在主進(jìn)程中調(diào)用這兩個(gè)函數(shù),對吧?試過,不可以,子進(jìn)程還是僵死,等主進(jìn)程退出后,僵死的子進(jìn)程也才退出。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2012-04-16 23:35 |只看該作者
12.    if(pid > 0)  //你沒判斷pid

13.    {

14.        printf("This is father\n");
            
15.    }else{

16.        printf("This is child\n");

17.       //do sth

18.        exit(0);

19.    }

while(wait(&status)){  //wait for exit
  if(WISEXITED(status))
    break;
}

//do something

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2012-04-18 18:48 |只看該作者
樓主看一下SIGCHILD和wait

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2012-05-14 16:04 |只看該作者
回復(fù) 8# fallavor

我的用法有點(diǎn)太對,我試試!謝謝!
   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP