Linux 编程学习

今天学习进程间通信IPC(InterProcess Communication)
目的:
数据传输
进程控制
共享数据
通知事件
资源共享
基本概念是信号和管道以及Unix System V的IPC机制,
问题:信号和管道大概懂一点,Unix System V的IPC通信机制怎么讲。
信号:SIGUSR1和SIGUSR2可以由应用程序来定义,按下ctrl+c内核发送一个SIGINT给前台进程
Linux中有29中不同的信号,呵呵,类似原来学的中断,我一直这么想,而且信号有个缺省的处理行为,通过提供信号处理函数来取代缺省反应
进程用sigpause来等待信号的到来
信号系统开销大,数量有限,发送信息有限。
进程可忽略大部分信息,除了:SIGSTOP以及SIGKILL
进程可以阻塞某些信号block,类似屏蔽
信号间没有优先级,这是信号与中断的不同,另外系统将多个同一类型的信号当作一个处理
所有信号的个数有cpu字长决定
程序维护信号信息在sigaction中
只有内核和超级用户有发送信号到其他进程的权限,普通用户只能向有相同UID和GID的进程或者在一个进程组中的进程发信号。

管道
管道提供简单流控机制,是单向,先入先出的无结构,固定大小的数据流
管道有大小
限制:
1.读数据的同时也将数据从管道移出,所以不能一发多收的进行广播
2.管道中数据为字节流,没有边界
3.如果有多个读进程,写进程不能指定读进程,如果有多个写进程,无法判断他们中谁发送了数据

System V IPC机制
包括:消息队列、信号灯和共享内存
它们使用相同的认证方法,获得这些资源
ipc_perm结构包括所有者,创建者和进程的用户ID及组ID还有访问权限和IPC对象关键字
关键字有public 和private
消息队列
Linux 维护一个消息队列的链表叫msgque,一个消息叫msg
链表每个元素指向一个msqid_ds的数据结构,msqid_ds结构用来描述消息,每个msqid_ds包含一个ipc_perm的指针和一个指向消息的指针,msqid_ds还包括写等待队列和读等待队列
信号灯semaphores
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值