linux学习 第二十五天(进程间通信<信号>)

        今天我们来说一下进程间通信的第二种方式:信号。信号是用户和内核之间进行通信的一种方式。

1.如何查看所有信号

        在终端输入 kill -l  

        所有信号类型如下:

    1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
    6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
    11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
    16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
    21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
    26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
    31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
    38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
    43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
    48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
    53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
    58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
    63) SIGRTMAX-1    64) SIGRTMAX

2. 特殊的信号

        (1)可以从中端输入的信号

  • SIGINT (ctrl+c)

  • SIGQUIT  (ctrl+\)

  • SIGSTP  (ctrl+z)

        (2)9号和19号信号

  • 9号信号SIGKILL  ——>进程结束

  • 19号信号SIGSTOP——>进程挂起

(3)

            SIGSEGV:表示内核操作内存错误
            SIGUSR1:用户可以使用该信号实现通信 
            SIGCHLD:表示该进程有一个子进程结束了 
            SIGPIPE:表示管道破裂
            SIGIO:表示IO事件发生

3.信号的处理方式

        

4.函数接口

        (1) single  <切换信号的处理方式>

                typedef void (*sighandler_t)(int);
                sighandler_t signal(int signum, sighandler_t handler);
        (2) 定时器alarm   <间隔seconds秒后给进程发送SIGALRM信号>     

                unsigned int alarm(unsigned int seconds);

         (3) kill  <向进程发送信号>

                int kill(pid_t pid, int sig);

5.同步和异步

        所谓同步,就是会阻塞等待对方发送消息,如线程一般,可实现同步通信;

        所谓异步,就是不知道对方啥时候发消息,所以不会阻塞等待,会执行自己的程序,如果收到对方消息才会执行相应程序;

今天就到这里啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值