Ich schreibe ein C-Programm, das fork(), execvp() für untergeordneten Prozess verwendet. Ich möchte anhalten, weitermachen und einen Kindprozess beenden, wie kann ich damit umgehen? Ich weiß nicht viel über Signale.So verwenden Sie SIGSTOP, SIGCONT und SIGKILL für untergeordneten Prozess in C
0
A
Antwort
0
Rufen Sie die Funktion signal innerhalb eines Prozesses auf, um einen Signalhandler einzurichten, eine Funktion, die aufgerufen wird, wenn dieser Prozess das von Ihnen spezifizierte Signal empfängt.
Hier ist ein Beispiel Signal-Handler-Funktion für das SIGUSR1 Signal:
static void usr1_signal_handler(int signo)
{
printf("Received SIGUSR1!\n");
finish_up = true;
}
und ein Beispiel dafür, wie es einzurichten:
if (signal(SIGUSR1, usr1_signal_handler) == SIG_ERR) {
printf("An error occurred while setting a signal handler.\n");
}
Sie einen Prozess der kill Funktion signalisieren kann:
kill(pid, SIGUSR1);
In diesem Fall könnte PID die Prozess-ID sein, die Sie wh empfangen de Sie rufen Gabel.
'kill (pid, SIGSTOP)' stoppt den Prozess, 'kill (pid, SIGCONT)' wird fortgesetzt. Was müssen Sie noch wissen? – Barmar