【发布时间】:2014-05-28 03:13:10
【问题描述】:
我刚接触 Linux 中的管道 I/O 功能。 制作了2个c文件,第一个发送数据:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
int main(int argc, char* argv[])
{
int i = 0;
for(;;)
{
printf("\nSent number: %d",i);
i++;
sleep(1);
fflush(stdout);
}
return 0;
}
第二个文件接收打印出来的数字并显示出来:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
int main(int argc, char* argv[])
{
int x;
for(;;)
{
scanf("%d",&x);
printf("Received number: %d\n",x);
sleep(1);
fflush(stdout);
}
return 0;
}
最后我尝试将数据从第一个文件重定向到第二个文件:
./send_test.out | ./rcv_test.out
终端反复打印:“Received number: 0”,我做错了什么? 另外,在将输出从发送方定向到接收方的同时,我如何必须为同时运行的两个程序设置终端窗口?
提前致谢
【问题讨论】:
标签: c linux terminal pipelining