如何通过execvp()启动进程的进程ID

kil*_*ler 1 c linux

我是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)

Ton*_*ous 7

如何通过execvp()获取进程的进程ID?

fork()返回父级的值是启动子进程PID.

如果fork()sys_call没有失败,则pid子进程中的变量为0,而父进程中的变量是生成的子进程中的变量pid.因此,如果您想知道子进程pid,您只需检查fork()父进程的返回值,该值存储在其中pid.为了获得父进程pid你可以调用getpid().

  • @killer如果在父进程中检查`pid`变量.即在else语句中,它是子进程的实际pid. (2认同)