1
我是Linux編程的新手,我想了解一些關於使用execvp()
開始的進程的建議。以下是啓動"TestApplication"
作爲子進程的代碼。當用戶中斷(ctrl + C)時,我想殺掉"TestApplication"
以及父進程。如何獲取通過execvp啓動的進程的進程ID()
有關如何實現此目的的任何建議。 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
}
'getpid()'返回父進程的pid。我想獲得我剛剛開始的流程的pid。我剛剛啓動了我的程序並檢查了任務管理器以查看進程ID。我總是隻獲得父進程的ID。 – killer
@killer 如果您在父進程中檢查'pid'變量。即在其他語句中,它是兒童過程的真實pid。 –
感謝@Tony Tannous指出了這一點。我現在得到正確的pid。乾杯。 – killer