有没有办法可以判断 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