tag 标签: 程间信号通信

相关博文
  • 热度 22
    2015-3-8 19:17
    1086 次阅读|
    1 个评论
    在古老的战场上,作为信号的烽火是最有效,最直接的通讯方式。在Linux系统中,信号(signal)同样也是最为古老的进程间通信机制。   信号类型:Linux系统支持的所有信号均定义在/usr/include/asm/signal.h,其中常见的信号有: SIGKILL:杀死进程 SIGSTOP:暂停进程 SIGCHLD:子进程停止或结束时用来通知父进程 6.1   发送信号 6.1.1   函数名     kill 6.1.2   函数原形     int kill(pid_t pid, int sig); 6.1.3   函数功能     向进程发送信号 6.1.4   所属头文件       6.1.5   返回值     成功:返回0  失败:返回-1 6.1.6   参数说明     pid:pid0,参数指向接收信号的进程     sig:指明要发送的信号   6.2   处理信号 6.2.1   函数名   signal   6.2.2   函数原形    typedef void(*sighandler_t)(int);       sighandler_t signal(int signum, sighandler_t handler); 6.2.3   函数功能     设置信号的处理方式 6.2.4   所属头文件     6.2.5   返回值     成功:返回处理函数指针  失败:SIG_ERR 6.2.6   参数说明     signum:要处理的信号                     handler:对应信号的处理方式      SIG_IGN:忽视这个信号(不处理) SIG_DFL:交给内核来处理 用户自定义的函数:交给用户自定义的函数来处理   小实验: /******A程序********/ #include #include #include void main(int argc, char *argv );//将字符型变量转化为整型      kill(pid, SIGINT); } /******B程序********/ #include #include #include void myfunc() {      printf("Process B receive SIGINT\n"); } int main() {      signal(SIGINT, myfunc);      pause();      return 0; }   注:先运行bsignal.c,然后再运行asignal.c并加上bsignal.c的ID值。