2016-06-07 2 views
-3

Что я должен набирать в терминале, чтобы он печатал «Привет» или «Пока»?Как сигналы работают на linux (c)?

#include <stdio.h> 
#include <signal.h> 

void catcher1(int signum) 
{ 
    printf("/nHi"); 
    kill(getpid(),22); 
} 

void catch22(int signum) 
{ 
    printf("\nBye\n"); 
    exit(0); 
} 

main() 
{ 
    signal(SIGTERM, catcher1); 
    signal(22, catch22); 
    printf("\nLook & Listen\n"); 
    while(1); 
} 
+0

' Ctrl + Z' -.> 'Bg' ->' ps' -> 'убить - SIGTERM (правильный pid) 'или' kill -22 (правильный pid) ', я думаю. – MikeCAT

ответ

2

От this link

"Сигналы программные прерывания. Они используются для связи между процессами в UNIX и UNIX-подобных операционных систем, таких как Linux. сигналы используются с Bell Labs UNIX в 1970-х годах и сегодня формально определяются стандартом POSIX. Когда сигнал отправляется процессу, операционная система прерывает нормальный поток процесса и передает уведомление. Если процесс ранее зарегистрировал способ обработки этот конкретный сигнал, эта процедура выполняется, в противном случае система выполняет сигнал по умолчанию обработчик. Сигналы могут быть отправлены с помощью команды kill. "

Таким образом, сигналы не вещи, набрали в терминале, но определенных символов или команд ввода, чтобы послать сигнал

+0

Является ли это сигналом (SIGTERM, catcher1), прототипом или его функцией вызова? –

+1

выглядит так, как будто он вызывает функцию внутри сигнала .h файл. – jgr208

+3

@ILyaShapira - 'man signal' – KevinDTimm