-1
私はsystem()
コールで常に-1を返すプロセスを持っていますが、同じシステム上の他のプロセスにはこのエラーはありません。私はこのプロセスがなぜsystem()
コールで-1を返すのか断然です。 system()
が呼び出されたコマンドも正常に実行されます。それは常に-1を返します。system()コールは常に-1で失敗する
私はsystem()
コールで常に-1を返すプロセスを持っていますが、同じシステム上の他のプロセスにはこのエラーはありません。私はこのプロセスがなぜsystem()
コールで-1を返すのか断然です。 system()
が呼び出されたコマンドも正常に実行されます。それは常に-1を返します。system()コールは常に-1で失敗する
問題は、そのプロセスのシグナル(SIGCHLD、SIG_IGN)によるものです。 SIGCHLDを無視すると、forkの後にwaipidを呼び出さないでください。 しかし、システムコールは常にwaitpidを呼び出すように見え、システムは-1を返します。
#include <signal.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
int ret = 0;
signal(SIGCHLD, SIG_IGN);
ret = system("echo hello!!");
printf("ret=%d errno=%d error=%s\n",ret,errno,strerror(errno));
}
bash-3.2$ ./a.out
hello!!
ret=-1 errno=10 error=No child processes
bash-3.2$