有没有办法可以判断 stderr 是输出到 C/C++ 程序中的文件还是终端?我需要根据程序是否被调用来输出不同的错误消息:
。/程序
或喜欢:
./程序 2>> 文件
尝试isatty()
在文件描述符上使用:
该
isatty()
函数确定文件描述符是否fd
引用了有效的终端类型设备。该函数
fileno()
检查参数流并返回其整数描述符。
请注意,stderr
它始终位于文件描述符 2 上,因此fileno()
在这种情况下您并不真正需要。
是的,您可以使用isatty(3)
来判断文件描述符是指终端还是其他东西(文件、管道等)。文件描述符 0 是stdin
, 1 是stdout
, 2 是stderr
。
if(isatty(2))
// stderr is a terminal