我正在尝试将应用程序从 OpenVMS 移植到 Linux。应用程序通过以下方式创建子流程:
if ((pid = fork()) == 0)
{
// do subprocess
}
else if (pid < 0)
{
printf("\ncreation of subprocess failed") ;
}
else
{
wait(pid) ;
}
现在编译器 (gcc) 警告我永远不会达到 'pid < 0' 的情况。但是为什么,以及我怎样才能在 fork() 中发现问题?
非常感谢您的帮助
约尔格
最佳答案
您没有显示 pid
的声明。我猜它被错误地定义为一些无符号整数类型。 您应该声明:
pid_t pid;
行前
if ((pid = fork()) == 0)
这记录在 fork(2) 中这也提醒你,你需要有
#include <unistd.h>
靠近源文件的开头。
关于c - 从 fork() 返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29914503/