gpt4 book ai didi

c - 当我有类似 "executable < example_file"或“cat xyz | 可执行文件?”时如何检查不正确的标准输入?

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

我有一个用 c 语言编写的程序,它的调用方式如下:

"my_program arg1 arg2 argc < example_file". 

"cat text_file | my_program arg1 arg2"

我有以下代码:

FILE *fp = fopen("/dev/stdin", "r");
int KMAX = 1024;
char t [KMAX];
iff (fgets(t, KMAX, fp) != NULL) {
......

如果用户实际提供输入,这会非常有效。但是,如果我只是调用该程序,例如:

my_program arg1 arg2 arg3

它只是挂起并等待用户输入。在这两种情况下从标准输入读取的最佳方法是什么?我以为检查 Null 会起作用,但似乎不起作用。通常我只会检查文本文件是否存在,但这仅适用于第一种执行程序的方式,而不适用于第二种。如有任何建议,我们将不胜感激。

最佳答案

最简单的方法就是使用 isatty()在标准输入上。

if (isatty(fileno(stdin)))
printf("terminal\n");
else
printf("pipe\n");

关于c - 当我有类似 "executable < example_file"或“cat xyz | 可执行文件?”时如何检查不正确的标准输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9221368/

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