如何设置隔离环境,以便测试可以多次 fork 的代码或程序?我在 Mac 上尝试过,如果在 while 循环中有一个未正确绑定的 fork,它会使终端冻结并显示 fork 资源暂时不可用。在这种情况下,我甚至无法使用 ps 或 kill,每次遇到它时都必须关闭。
另外,我尝试使用 _exit(3) 终止我的子进程 - 我可能做错了。有人能帮我吗?
这是我正在尝试的代码。
pid = fork();
if(pid > 0){
if(findCharInString(';',input)){
printf("Two commands %s\n",input );
sleep(1);
_exit(3);
}
else{
system(input);
}
}
if(pid == 0){
return 0;
}
答案1
pid==0 将您的脚本锁定在无限循环中,因为 pid==0 是一个等式,但 pid==0 是一个布尔值并且始终为 FALSE。