c - 从 fork() 返回 -1

标签 c linux gcc fork openvms

我正在尝试将应用程序从 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/

相关文章:

c - 操作文件时如何避免 msvcr100.dll 依赖?

c - strncpy 的问题以及如何修复它

linux - 如何在slitaz中为root用户设置空白密码

linux - 如何将制表符附加到文本文件中每一行的末尾

c - 链接器报告 undefined reference ,但代码编译正常

c - 如何操作字符串以将其中的一部分存储为变量?

c - 结构内部结构类型的填充

linux - ldd 报告的库是否解析输入库的所有 undefined reference ?

c - gcc 为不同的文件名生成不同的结果

linux - 以前错误的未对齐调用现在可以工作了吗?