如何在C

时间:2016-06-09 00:18:49

标签: c linux signals fork sigkill

我正在编写一个使用fork(),execvp()进行子进程的C程序。我想停止,继续并杀死一个子进程,我该如何处理它?我对信号知之甚少。

1 个答案:

答案 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。