如何在 C 中对子进程使用 SIGSTOP、SIGCONT 和 SIGKILL

问题描述 投票:0回答:1

我正在编写一个使用 fork()、execvp() 作为子进程的 C 程序。我想停止、继续并杀死一个子进程,我该如何处理?我对信号不太了解。

c linux signals fork sigkill
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.