【发布时间】:2016-03-20 10:51:24
【问题描述】:
我是 C 系统编程的新手。
在这里,我正在尝试编写一个每 (n=2) 秒更改一次 PID 的程序。但是在编译时,我每次都得到相同的 PID。 PID 永远不会改变。请问有人有意见吗?
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(){
printf("Programme qui change de PID toutes les deux secondes \n");
pid_t fils;
while(1){
printf("I'm %d\n",(int)getpid());
sleep(5);
fils = fork();
if(fils < 0){
perror("Fork child \n");
exit(1);
}
else if (fils ==0 )
exit(0);
}
return 0;
}
【问题讨论】:
-
尝试将
else if (fils ==0 )更改为else if (fils > 0 )。如图所示,您的代码退出子进程并保持相同/第一个父进程运行。因为它当然是同一个进程,所以它的 pid 保持不变。 -
@kaylum,它有效!谢谢你:)
-
次要选择:在 C 中表达非终止循环的规范方法是
for(;;),因为它避免了while(1)条件中的常量值布尔值(一些 lint 抱怨它)。而且打字更短! -
@Jens : 谢谢你的建议 :)
-
@Jens:
while(true)完全是地道的 C。
标签: c