在C中stdin和控制台和键盘输入是否相同?
答案 0 :(得分:2)
来自isatty(3)
手册页:
isatty()函数测试fd是否是引用终端的打开文件描述符。
#include <unistd.h>
int isatty(int fd);
如果fd是指向终端的打开文件描述符,则isatty()返回1;否则返回0,并设置errno以指示错误。
因此,isatty(stdin)
如果被输入则返回非零值,如果被重定向则返回零。
答案 1 :(得分:1)
是的,这是正确的。实际上,您可以使用read()系统调用来接受来自stdin的输入。
答案 2 :(得分:1)
不一定。 stdin
可以从文件(例如executable < input
)或其他一些非交互设备重定向。
amphetamachine的答案为您提供了区分的工具。