进程通信: 多个进程之间进行数据交换
1.简单进程间通信:命令行参数.环境变量.信号.文件.
2.传统进程间通信:管道.
3.XSI进程间通信:共享内存.消息队列.信号量.
4.网络进程间通信:套接字.
信号集:信号的集合
信号量:进程间通信的方式 限制进程多共享资源的访问
信号量集:线程同步的一种方式
半双工管道 mkfifo 创建管道文件
有名管道和无名管道
IPC标识
1.创建IPC键值 key_t keyftok(".",0-255); -1
2.创建共享内存 int shmid = shmget(key,4096,0644|IPC_CREAT); -1
3.加载共享内存到进程地址中 void paddr = shmat(shmid,NULL,0) (void)-1
4.卸载共享内存 shmdt(paddr)
5.删除共享内存 或者 获得共享内存的属性 shmctl
int semop(semid,struct sembuf * sops unsigned nsops)
int semid = semget(key,4,0644|IPC_CREAT);
array
union semun
unoin = array
进程间通信的方式
1.文件 环境表 命令行参数 信号
2.管道:
有名管道: mkfifo open read/write close unlink
无名管道: 父子进程 pipe pipefd[0]读 pipefe[1]写 close read/write close
3.XSI:
共享内存: 速度最快,内存映射 同步 维护shmid_ds结构体形式的共享内存对象。 shmget shmat shmdt shmctl
消息队列: 维护一个msqid_ds结构体形式的消息队列对象 msgget msgsnd msgrcv msgctl
信号量集: 限制多个进程对有限共享资源的访问 semget semctl semop
4.网络通信
3861

被折叠的 条评论
为什么被折叠?



