c - 使用 2 个 c 文件的 Linux 命令行重定向

标签 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

终端重复打印:“收到的号码:0”,我做错了什么? 另外,我如何才能同时运行两个程序的终端窗口,同时将输出从发送方定向到接收方?

提前致谢

最佳答案

您没有以接收者可以理解的格式“发送”号码。

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

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

关于c - 使用 2 个 c 文件的 Linux 命令行重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23055369/

相关文章:

c - 为什么我不能 mmap/proc/self/maps?

arrays - 为什么我的 bash 数组追加不起作用?

c# - 我想使用 C# 将控制台中的文本水平和垂直居中

linux - 使用命令 "-d"和 "-cp."时出现 Javac 无效标志错误

c - 我不明白 K&R 中的哈希表示例

将 Char 数据数组转换为 C 中的组合字符串

linux - 我无法在 Centos 7 上通过 yum 安装 libopenblas

linux - 如何削减所有的制表符和空格 Linux shell?

linux - 打开新的终端窗口并执行 bash 文件

c - 为什么在为矩阵分配内存时会出现段错误?