当前位置: 首页 > 面试题库 >

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

公冶子琪
2023-03-14
问题内容

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

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

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


问题答案:

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



 类似资料:
  • 以下代码: 将“ba”打印到控制台 同时: 印“AB”这是为什么? 似乎cout在调用最外层(最接近;)函数优先,它的工作方式,这是它的行为方式吗?

  • 只是想知道是否有人能向我解释这种行为?是意料之中的吗?我需要使用std::fixed来强制打印双打吗?

  • std::cout是std::ostream的一个实例。我可以在一个名为usr/include/c/7/iostream的文件中看到std::cout的声明: 而std::ostream由typedef std::basic\u ostream定义 此外,您似乎无法创建std::ostream的实例。请参阅此演示代码片段: 以下是编译器对上述代码段的抱怨: 问题来了,因为

  • 文件描述符 Linux很重要的设计思想就是一切皆文件,网络是文件,键盘等外设也是文件,很神奇吧?于是所有资源都有了统一的接口,开发者可以像写文件那样通过网络传输数据,我们也可以通过/proc/的文件看到进程的资源使用情况。 内核给每个访问的文件分配了文件描述符(File Descriptor),它本质是一个非负整数,在打开或新建文件时返回,以后读写文件都要通过这个文件描述符了。 应用 我们想想操作

  • 文件描述符接口 函数 int  fd_new (void)   分配文件描述符   struct dfs_fd *  fd_get (int fd)   获取文件描述结构   void  fd_put (struct dfs_fd *fd)   放置文件描述符   int  fd_is_open (const char *pathname)   判断文件是否已被打开   int  select (

  • 问题内容: 假设我有两个进程,ProcessA和ProcessB。如果我在ProcessA中执行,然后可以通过IPC将文件描述符的值传递给ProcessB并让它处理相同的文件吗? 问题答案: 您可以通过UNIX域套接字将文件描述符传递给另一个进程。这是传递此类文件描述符的代码,摘自Unix Network Programming 这是接收文件描述符的代码