我只是在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
.

终端重复打印:“收到的号码:0”,我做错了什么? 此外,我如何为两个程序同时运行的终端窗口,同时将输出从发件人引导到接收器?

提前感谢

有帮助吗?

解决方案

您不会以“发送”Receiver可以了解的格式。

尝试删除除了来自发件人的格式字符串的%d之外的所有文本。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top