我正在编写一个使用 fork()、execvp() 作为子进程的 C 程序。我想停止、继续并杀死一个子进程,我该如何处理?我对信号不太了解。
在进程中调用 signal 函数来设置信号处理程序,当该进程收到您指定的特定信号时将调用该函数。
这是 SIGUSR1 信号的示例信号处理函数:
static void usr1_signal_handler(int signo)
{
printf("Received SIGUSR1!\n");
finish_up = true;
}
以及如何设置的示例:
if (signal(SIGUSR1, usr1_signal_handler) == SIG_ERR) {
printf("An error occurred while setting a signal handler.\n");
}
您可以使用 kill 函数向进程发出信号:
kill(pid, SIGUSR1);
在这种情况下,pid 可能是您调用 fork 时收到的进程 ID。