Linux 进程间通信方式
1 管道(pipe)(单向的) 和有名管道(FIFO)
int pipe(fd【2】) fd 【0】用于读管道 fd【1】写
int mkfifo(const char * pathname, mode_t mode)
有名管道比管道多了一个打开操作:open。
对于读进程
• 若该管道是阻塞打开,且当前FIFO内没有数据,则对读进程而言将一直阻塞到有数据写入。
• 若该管道是非阻塞打开,则不论FIFO内是否有数据,读进程都会立即执行读操作。
对于写进程
• 若该管道是阻塞打开,则写操作将一直阻塞到数据可以被写入。
• 若该管道是非阻塞打开而不能写入全部数据,则读操作进行部分写入或者调用失败
2 信号
3 消息队列 创建msggset()读写 msgsnd()msgrcv() 删除msgctl()
4 共享内存 创建shmget 映射 shmat 使用 接触 shmdt 删除shmct
ipcrm -m .....删除进程
ipcs -q 查找地址