0

子プロセスの PID を取得しようとしています。しかし、execl を実行すると、実際の PID ではなく、0 の PID と、時には負の数が出力されます。ただし、execl 行を削除すると、正常に動作します。誰でも理由を知っていますか?

if (pid==0)
            { 
                    arrayPID[i] = getpid();
                 execl("/bin/ls","/bin/ls",NULL); 
            }

             printf ("Child PID is %i\n",arrayPID[i]);

execl の 2 番目のパラメーターは単に "ls" である必要があることはわかっていますが、機能しているようで、そのようにする必要があります。このせいでしょうか?

私もこれを試しましたが、PID にゼロまたは負の値を与えます。

if (pid==0)
            { 
                    arrayPID[i] = getpid(); 
            }
if (pid==0)
            { 
                 execl("/bin/ls","/bin/ls",NULL); 
            }

私の他のコードが正しいと仮定してください。

ありがとう

4

2 に答える 2