一尘不染

如何在cout上使用isatty(),还是可以假设cout ==文件描述符1?

linux

好吧,主题基本上说明了一切。

我有一个命令行实用程序,可以使用管道或I / O重定向来交互使用或在脚本中使用。我使用cincout用于I /
O,我想在结束时,如果输出控制台写一个额外的EOL,使用户提示将从下一行开始。在脚本中这将是有害的。

我可以假设cin == 0, cout == 1吗?我知道没有干净的方法来获取流的文件描述符。还是?


阅读 209

收藏
2020-06-03

共1个答案

一尘不染

可以使用rdbuf()在程序中更改std :: cin和std :: cout的目的地。如果您不这样做,则可以假定cin = 0,cout =
1且clog和cerr都= 2可能是非常安全的,因为C ++标准规定它们与C
stdin,stdout和stderr同步,并且每个都有在启动时POSIX这些文件描述符。

2020-06-03