调用以下过程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。