如何殺死呼叫execv的進程?

如何殺死呼叫execv的進程?

一個進程調用execv看起來設計並沒有消亡。

例子借自這裡:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

main() {
   pid_t pid;
   char *const parmList[] = {"/bin/ls", "-l", "/u/userid/dirname", NULL};

   if ((pid = fork()) == -1)
      perror("fork error");
   else if (pid == 0) {
      execv("/bin/ls", parmList);
      printf("Return not expected. Must be an execv error.n");
   }
}

如果我調用該可執行文件foo,我如何在 foo 啟動後殺死它?我唯一的選擇似乎是捕獲父進程 ID,然後終止它。

foo &
echo $! > /path/to/foo_pid
kill /path/to/foo_pid

但我沒有辦法捕獲父進程的PID。

相關內容