2016-06-07 65 views
-3

我應該在終端中輸入什麼內容才能打印「Hi」或「Bye」?信號如何在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的進程間通信。 信號已經投入使用以來貝爾實驗室UNIX在20世紀70年代和今天被POSIX標準正式定義 當一個信號被髮送到一個進程時,操作系統會中斷正常的進程執行流程併發送通知如果進程之前已經註冊了一個方法來處理該特定信號,該例程被執行,否則系統執行默認信號處理程序。 可以使用kill命令發送信號。

因此,信號不被輸入的東西在終端但某些字符或命令輸入到發送信號

+0

它是信號(SIGTERM,catcher1)嗎?原型還是它的調用函數嗎? –

+1

看起來像是調用信號內部的函數.h文件。 – jgr208

+3

@ILyaShapira - 'man signal' – KevinDTimm