写入stdout并从C中的stdin读取

时间:2016-11-07 08:01:03

标签: c pipe

我正在写两个c文件,一个是写(通过stdout),另一个是读(通过stdin)。

但是读取的代码总是挂着read(),我试过fread函数但没用。

有人可以提供建议吗?

写例:

int main() {
    char *a_string="Hello";
    write(fileno(stdout), a_string, strlen(a_string)+1);

    return 0; 
}

阅读示例:

int main() {
    char buffer[100];
    read(fileno(stdin), buffer, 100-1);
    printf("buffer=%s\n", buffer);

    return 0;
}

2 个答案:

答案 0 :(得分:0)

你需要输入EOF来停止,在Linux中,它是Ctrl + D.

答案 1 :(得分:0)

  

读取代码总是挂起read(),我试过fread函数但没用。

这是因为readfreadfgets和类似函数不同,当用户输入换行符时不会退出读取(按 Enter )。它等待直到读取EOF或者直到读取了指定的字节为止。

要将EOF发送到read,您必须按 Ctrl + D