我正在编写一个使用fork(),execvp()进行子进程的C程序。我想停止,继续并杀死一个子进程,我该如何处理它?我对信号知之甚少。
答案 0 :(得分:0)
调用进程中的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。