2016-06-07 43 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