小编B N*_*lér的帖子

C - stdin,unix管道和EOF

我正在编写一个应用程序,它首先从unix管道接收数据,然后提示用户输入.我似乎无法弄清楚为什么在提示用户输入之前管道的输入似乎没有正确关闭.感觉我在这里缺少一些非常基本的东西.

我曾尝试提出了冲洗标准输入所有的例子在这里没有成功.也似乎有可能相关,但我还没有设法提取任何相关的答案.

#include <stdio.h>
#include <stdlib.h>

#define BUFSZ 1024

int main(void) {

    char *buf = calloc(BUFSZ, sizeof(char));

    while(fgets(buf, BUFSZ, stdin)) { printf("Pipe input: %s", buf); }

    printf("Enter input: ");
    fgets(buf, BUFSZ, stdin);
    printf("User input: %s", buf);

    free(buf);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

用法和输出示例:

$ cat testdata2 | ./a.out
Pipe input: testdata testdata
Pipe input: testdata testdata2
Pipe input: testdata testdata3
Pipe input: testdata testdata4
Pipe input: testdata testdata5
Pipe input: testdata testdata6
Pipe input: testdata testdata7
Enter input: …
Run Code Online (Sandbox Code Playgroud)

c pipe c99

0
推荐指数
1
解决办法
261
查看次数

标签 统计

c ×1

c99 ×1

pipe ×1