Linux命令行重定向,包含2个c文件

时间:2014-04-14 08:28:29

标签: c linux terminal pipelining

我刚接触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

终端重复打印:&#34;收到的号码:0&#34;,我做错了什么? 另外,在将发送器的输出定向到接收器的同时,如何同时运行两个程序的终端窗口?

提前致谢

1 个答案:

答案 0 :(得分:0)

你不是&#34;发送&#34;接收者可以理解的格式的数字。

尝试从发件人的格式化字符串中删除%d以外的所有文字。

此外,您应该在依赖它之前检查scanf()的返回值。