3.管道通信:
管道用于进程间的通信时,通常设定一个进程向管道中写信息,另一个进程从管道中读信息。因此用管道进行通信,一般会用到write和read调用。
1)对管道写与对文件写操作的区别:
- 对管道写时,每次write调用的操作结果总是附加在管道的末端,而文件的写不遵守这条规定,它可以通过调整指针随意进行的。
- 完成管道写命令时一次写入的的字节数最好不要大于设定的系统常量PIPE_BUF,而对文件的写操作不遵守此规则。
- 当设备忙碌时,write会被阻塞并延时执行,当write完成返回写入的字节数,这一点两者相同。
- 试图对一个没有被进程打开作为写的管道文件而进行write操作时,将生成SIGPIPE信号,errno设成EPIPE,表示管道破坏。
2)对管道读与对文件读的区别:
- 对管道文件的读只能从当前位置开始,不支持搜索指针移动,而对文件的读可以支持的移动,而对文件的读可以支持搜索指针的移动。
- 当管道中无信息时read系统调用被阻塞,但对空文件读时可返回空串并不发生进程阻塞。
- 如果管道未被其他进程以写方式打开,就对管道做read系统调用时返回0值。
阅读(572) | 评论(0) | 转发(0) |