【发布时间】:2015-09-20 12:01:28
【问题描述】:
我正在尝试在管道中进行简单的读/写 但它给了我错误
这是我的代码:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<fcntl.h>
#define BUFSIZE 80
int main()
{
int fd[2],n,i,h;
char buf[BUFSIZE];
pipe(fd);
switch(fork())
{
case -1 :printf("Fork Error");
exit(0);
case 0 :close(fd[0]);
printf("Enter N :");
scanf("%d",&n);
write(fd[1],&n,sizeof(n));
close(fd[1]);
case 1 :close(fd[1]);
n=read(fd[0],&h,sizeof(h));
for(i=1;i<=h;i++)
{
if(i%2==1)
{
write(1,&i,n);
}
}
close(fd[0]);
}
exit(0);
}
在这段代码中:孩子的 fd[0] 指针被关闭并从孩子的 fd[1] 指针写入,然后父母从 fd[1] 指针读取并将其存储在 h 变量中,然后变量 i 的值进入 STDOUT_FILENO (1) 并在标准输出上显示输出
输出:
kartik@ubuntu:~/Desktop/isp$
输入 N :6
6:找不到命令
【问题讨论】:
-
您使用的是 C 还是 C++ 编译器?
-
您的
switch中缺少break语句。
标签: c++ c unix pipe read-write