0

アプリケーションを OpenVMS から Linux に移植しようとしています。アプリケーションは、次の方法でサブプロセスを作成します。

if ((pid = fork()) == 0)
{
    // do subprocess
}
else if (pid < 0)
{
    printf("\ncreation of subprocess failed") ;
}
else
{
    wait(pid) ;
}

これで、コンパイラ (gcc) は、'pid < 0' には決して到達しないという警告を表示します。しかし、なぜ、そしてどうすれば fork() の問題をキャッチできるのでしょうか?

ご協力ありがとうございました

ヨルク

4

1 に答える 1

3

の宣言を表示しませんpid。符号なしの整数型として誤って定義されたと思います。次のように宣言する必要があります。

 pid_t pid;

行の前に

 if ((pid = fork()) == 0)

これはfork(2)に文書化されており、必要であることも思い出させてくれます

 #include <unistd.h>

ソースファイルの先頭付近。

于 2015-04-28T09:05:19.067 に答える