array [0]中的read()返回数组[1]中的值?

时间:2016-10-08 06:03:53

标签: c

因此,当我在C中学习管道编程时,我决定注释掉开放的管道()代码,看看会发生什么,结果肯定不是我的预期。

这是代码

#include <stdio.h>
#include <unistd.h>

#define MSGSIZE 16

char *msg1 = "Hello, World #1";
char *msg2 = "Hello, World #2";
char *msg3 = "Hello, World #3";

int main(void) {
    char inbuf[MSGSIZE];
    int p[2], j;

    /* if (pipe(p) == -1) { */
    /*  perror("pipe call"); */
    /*  exit(0); */
    /* } */

    write(p[1], msg1, MSGSIZE);
    write(p[1], msg2, MSGSIZE);
    write(p[1], msg3, MSGSIZE);

    for (j = 0; j < 3; j++) {
        read(p[0], inbuf, MSGSIZE);
        printf("%s\n", inbuf);
    }

    exit(0);
}

以下是该计划的输出:

Hello, World #1Hello, World #2Hello, World #3^C

在Emacs shell中,输出更加奇特​​

Hello, World #1^@Hello, World #2^@Hello, World #3^@

所以我理解0和1分别是stdin和stdout的文件描述符,但我只是将()写入int数组的第二个元素并从第一个元素读取(),我是如何得到这个输出的?

提前感谢任何花时间解释此事的人!

0 个答案:

没有答案