进程间通信
无名管道(pipe)
系统调用pipe int pipe lint fals [2])创道建管道
参数:fds包含两个元素fds[0],fds[1].pipe成功后,返回0,并向fds返回两个文件描述符:其中,fols[0]对应管道的读端文件,fds[]对应于管道的写端文件因为一个管迫缓冲区容量有限,那么对于无名管道的操作可能出现;
1.写进程向已满的简写数据时,写进程将被阻塞,直至写进程向管道中写数据读进程把数据从管道中读出
2、若读进程从空管道中读数据,则读进程也会被阻塞,直至写进程向管道中写数据
3、如果管道中的读出端进程不存在,则写进程调用 write 时,内核向此进程发送信号SIGPIPE,系统默认动作为终止进程有名管道(FIFO)
FIFO允许不相关的进程可以相互通信信创建FIFO文件:
①在命令行使用mkfif0命令
②调用函数mkfif0itmkfifo(constchar*pathr
mode-t moe
pathname指定要创建的FIFO文件的路径名.moc与系统调用Open的mode相同,用于指由文件的访问权创建了FIFO又件后,便可以调用open read write close如同访问普通文件一样.