7月5日笔记-进程

2015年07月05日

学习内容出自:一步步学习Linux多任务编程

  • 进程间通信概述
    进程是一个独立的资源分配单元,不同进程之间的资源是独立的、没有关联的。不能在一个进程中直接访问另一个进程的资源。
    进程间通信的目的:数据传输、通知事件、资源共享、进程控制
  • 进程间通信:信号中断处理
    信号是Linux进程间通信最古老的方式
    信号的常用操作:
    1、发送信号:int kill(pid_t pid,int sigum);
    pid:将信号传给哪个进程  sigum:信号编号
    2、等待信号:int pause(void)
    没收到信号则阻塞,若收到则中断当前进程
    3、处理信号:执行系统默认、忽略、执行自定义信号处理函数
    注:SIGKILL与SIGSTOP不能用于更改信号的处理方式,此函数不会阻塞
    signum:信号编号 查看方法:kill -l
    handler:
    SIG_IGN:忽略
    SIG_DFL:执行系统默认动作
    信号处理函数名
    返回两次:第一次返回NULL,下一次返回此信号上一次注册的信号处理函数地址
    4、信号集和信号阻塞集
    阻塞:不是禁止信号传送,而是暂缓信号传送。可以通过sigprocmask()修改当前信号来改变信号阻塞情况
    注:不能阻塞SIGKILL和SIGSTOP,此时sigprocmask()不返回错误,至忽略它们
    阻塞SIGFPE可能导致不可挽回的结果
    可靠信号操作
    不可靠信号:不支持排队,是非实时信号
    signal()主要用于不可靠信号
    sigaction()支持可靠、实时信号处理。并支持信号传递信息,检查或修改指定信号的位置
    sigqueue(pid_t pid, int sig,const union sigval value);
    给指定进程发信号