我希望我的子进程在父进程等待 3 秒并杀死孩子时执行 bin 程序。我知道很傻,但仍然必须这样做。在这里似乎无法正确使用可执行文件。我尝试运行日历,gedit等,只是对我不起作用。有什么建议吗?
int main(int argc, char* argv[])
{
pid_t pid;
pid = fork();
if (pid == 0) {
execv("calc",argv);
return 0;
}
else if (pid > 0) { /* parent process */
sleep(3);
kill(pid, SIGKILL);
printf("Child process with the ID: %d has been killed by the parent process with the ID: %d...n", pid, getpid());
return 0;
}
}
从man execv
:
execv()、execvp() 和 execvpe() 函数提供了一个指向以 null 结尾的字符串的指针数组,这些字符串表示新程序可用的参数列表。按照惯例,第一个参数应指向与正在执行的文件关联的文件名。
所以 - 它不会通过路径搜索。您可以检查execv
的返回值以查看其失败。
使用"/usr/bin/gedit"作为第一个参数,它应该可以工作。另请注意,在较旧的计算机上,三秒钟可能不足以看到程序正在运行。