问题:
在创建匿名管道实现父子进程的通信时,需要创建匿名管道代码如下:
// 在fork之前创建管道
int pipefd[2];
int ret = pipe(pipefd);
…………
int len = read(pipefd[0], buf, sizeof(buf));//数组下标0处的文件描述符存有写入的文件。
后续需要读的时候就直接去0处的文件描述符读取了,我想看看这个pipe函数干了啥,数组里的值到底时多少。
代码:
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int pipefd[2];
printf("%d %d\n",pipefd[0],pipefd[1]);//没调用pipe函数的时候看一下
int ret=pipe(pipefd);
printf("%d %d",pipefd[0],pipefd[1]);//调用了以后看一下
return 0;
}
结果:
多次实验发现结果一直都是3 4。说明建立了管道以后是往文件描述符为3的文件读数据,往文件描述符为4的文件写数据。