我是linux编程的新手,我想得到一些关于杀死一个开始使用的进程的建议execvp().以下是"TestApplication"作为子进程启动的代码.当用户中断(ctrl + C)时,我想"TestApplication"和父进程一起杀死它.
有关如何实现这一目标的任何建议.PLS.救命.谢谢.
int main(int argc, char* argv[])
{
signal(SIGINT, KillProcess);
pid_t pid;
pid = fork();
if(pid == -1)
{
printf("Error: Fork process failed");
exit(-1);
}
else if (pid == 0)
{
char *const paramList[] = {"5"," 1", NULL};
execvp("TestApplication", paramList);
}
else
{
// Wait for signal from the TestApplication process when successfully executed
}
return 0;
}
void KillProcess(int sig)
{
// Want to get the process ID of "TestApplication"
// Then force Kill it
}
Run Code Online (Sandbox Code Playgroud)
如何通过execvp()获取进程的进程ID?
fork()返回父级的值是启动子进程PID.
如果fork()sys_call没有失败,则pid子进程中的变量为0,而父进程中的变量是生成的子进程中的变量pid.因此,如果您想知道子进程pid,您只需检查fork()父进程的返回值,该值存储在其中pid.为了获得父进程pid你可以调用getpid().