我正在做一个操作系统课程,我们应该学习如何使用管道在进程之间传输数据.
我们得到了这段简单的代码,演示了如何使用管道,但我很难理解它.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
main()
{
int pipefd [2], n;
char buff[100] ;
if( pipe( pipefd) < 0)
{
printf("can not create pipe \n");
}
printf("read fd = %d, write fd = %d \n", pipefd[0], pipefd[1]);
if ( write (pipefd[1],"hello world\n", 12)!= 12)
{
printf("pipe write error \n");
}
if( ( n = read ( pipefd[0] , buff, sizeof ( buff) ) ) <= 0 )
{
printf("pipe read error \n");
}
write ( 1, buff, n ) ;
exit (0);
}
Run Code Online (Sandbox Code Playgroud)
写功能有什么作用?它似乎将数据发送到管道并将其打印到屏幕上(至少看起来这是第二次调用write函数时它会这样做).
有没有人有任何关于良好网站的建议,以了解这个,FIFO,信号,C中使用的其他基本linux命令等主题?
该程序通过pipe(2)调用创建一个管道.管道有一个文件描述符打开read(pipefd[0])和一个打开写入(pipefd[1]).程序首先将"hello world \n" 写入管道的写入端,然后从管道的读取端读取消息.然后通过对文件描述符1 的write(2)调用将消息写出到控制台(stdout).
Beej的Unix进程间通信指南提供了有关Unix/Linux IPC的一些很好的信息.您经常会找到他的其他指南, Beej的网络编程指南.
我发现理解UNIX/LINUX编程: Bruce Molay的理论与实践指南是一本关于Unix/Linux系统编程的优秀书籍.
| 归档时间: |
|
| 查看次数: |
4186 次 |
| 最近记录: |