gpt4 book ai didi

c - 管道输入到 stdin 在 c 中不起作用

转载 作者:行者123 更新时间:2023-11-30 20:37:25 26 4
gpt4 key购买 nike

#include<stdio.h>

main()
{
int count;
fprintf(stderr, "Starting program.\n");
scanf("%d", &count);
fprintf(stderr, "Read: %d\n", count);

}

我只是尝试从 stdin 读取一个数字并在 stderr 上重复它,当我编译和运行时,我看到第一个 stderr 打印,然后按预期显示代码块,但是当我通过管道输入到程序时,我从未看到stderr 打印并且程序立即退出。

我尝试在最后一次打印到 stderr 之后添加 sleep(5),但程序立即退出,没有任何输出。

gcc pipetest.c -o b
echo '2' > ./b

最佳答案

尝试下面的代码

echo 2|./b
<小时/>
 #include <stdio.h>
#include <unistd.h>
#include <termios.h>
int
main(void)
{
int count;
struct termios t;
if (tcgetattr(STDIN_FILENO, &t) < 0)
{
scanf("%d", &count);
fprintf(stderr, "Read: %d\n", count);
return 0;
}
fprintf(stderr, "no pipe found \n");
return -1;
}

关于c - 管道输入到 stdin 在 c 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32666014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com