进程间通信
1、管道 pipe(int fds[2])
主进程建立管道,然后fork,然后父子进程对同一个管道进行读或写操作
2、通过管道实现执行某个shell命令,并且把执行进程的标准输出或输入返回
FILE * fp=popen('cmdString','type')
pclose(fp)
3、命名管道FIFO
读会在写打开的管道上阻塞,写会在读打开的管道上阻塞。
多个写在打开一个的读管道上阻塞,最后一个写进程关闭时,会给读管道发送文件结束标记。
最后一个引用管道进程结束,管道也会删除。
4、IPC内核对象的缺点
1)无引用计数,不会自动删除
2)消息队列,新的应用不建议使用,设计初始是为了告诉IPC,现在与管道比没有差异了。
3)信号量就是资源计数器,需要在调用sem_op时,指定UNDO,便于进程终止时,释放资源。
加锁时,推荐使用记录锁
--信号量、互斥锁、记录锁,互斥最高;记录次,信号量最低,推荐使用记录锁 4)共享存储--匿名内存共享
挂载 卸载