我正在尝试获取子进程的 PID。但是当我运行 execl 时,它会打印出 0 的 PID,有时会打印出负数,而不是真正的 PID。但是,如果我删除 execl 行,它工作正常。有谁知道为什么?
if (pid==0)
{
arrayPID[i] = getpid();
execl("/bin/ls","/bin/ls",NULL);
}
printf ("Child PID is %i\n",arrayPID[i]);
请注意,我知道 execl 的第二个参数应该只是“ls”,但它似乎正在工作,我需要它是这样的。是不是因为这个?
我也试过这个,但仍然给 PID 零或负值。
if (pid==0)
{
arrayPID[i] = getpid();
}
if (pid==0)
{
execl("/bin/ls","/bin/ls",NULL);
}
请假设我的其他代码是正确的。
谢谢