【发布时间】:2010-12-27 07:26:20
【问题描述】:
C 语言中的标准输入、控制台和键盘输入是否相同?
【问题讨论】:
C 语言中的标准输入、控制台和键盘输入是否相同?
【问题讨论】:
来自isatty(3) 手册页:
isatty() 函数测试 fd 是否是指向终端的打开文件描述符。
#include <unistd.h>
int isatty(int fd);
isatty() 如果 fd 是指向终端的打开文件描述符,则返回 1;否则返回0,设置errno表示错误。
所以,isatty(stdin) 在输入时返回非零值,如果被重定向则返回零值。
【讨论】:
是的,没错。你基本上可以有一个 read() 系统调用来接受来自标准输入的输入。
【讨论】:
不一定。 stdin 可以从文件(例如executable < input)或其他一些非交互式设备重定向。
amphetamachine 的答案为您提供了区分差异的工具。
【讨论】: