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

在C中检测是否输出到端子

曾阳飙
2023-03-14
问题内容

我正在为OS X和Linux编写一个C程序,并且我想根据是否将其输出到终端来调整输出。我知道我们已经在Shell脚本中介绍了如何执行此操作
但是,如何在C程序中执行此操作?


问题答案:

用途isatty()

$ man isatty
ISATTY(3)                  Linux Programmer's Manual                 ISATTY(3)

NAME
       isatty - does this descriptor refer to a terminal

SYNOPSIS
       #include <unistd.h>

       int isatty(int desc);

DESCRIPTION
       returns  1  if  desc is an open file descriptor connected to a terminal
       and 0 otherwise.

由于stdout始终是文件描述符1,因此您可以执行以下操作:

if(isatty(1))
    // stdout is a terminal


 类似资料:
  • 问题内容: 我希望Java程序具有不同的默认设置(详细程度,可能在支持时显示彩色输出),具体取决于其用途。在C语言中,有一个isatty()函数,如果将文件描述符连接到终端,该函数将返回1,否则返回0。在Java中有与此等效的功能吗?我在JavaDoc中没有看到InputStream或PrintStream的任何内容。 问题答案: 如果已连接,System.console()将返回您的应用程序所连

  • 问题内容: 有没有办法检测是否已连接到控制台终端?例如,我希望能够检测foo.py是否通过以下方式运行: 要么 我问这个问题的原因是,我想确保进度条显示仅在前一种情况下发生(真实控制台)。 问题答案: if sys.stdout.isatty(): # You’re running in a real terminal else: # You’re being piped or redirecte

  • 有一个用@Cacheable注释的方法返回一个对象: 和UserData对象: 如何检测是否调用了带注释的@Cacheable方法,或者其输出是否来自缓存? 解决方法是注入CacheManager并手动检测: 然而,为了简单起见,这段代码没有使用@Cacheable注释。 是否可以使用@Cacheable并检测输出是否来自缓存?

  • 问题内容: 在Go语言中,您可以通过添加ZONEINFO环境变量来指定要使用的特定zoneinfo.zip文件,该变量指向要用于时区信息的特定文件。这很棒,因为它使我可以确保前端和后端使用的IANA时区数据库的版本相同。 但是,似乎没有任何方法可以检测对指定区域信息文件的使用是否失败。查看源代码(https://golang.org/src/time/zoneinfo.go),看来使用指定文件的任

  • 本文向大家介绍C#检测DataSet是否为空的方法,包括了C#检测DataSet是否为空的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#检测DataSet是否为空的方法。分享给大家供大家参考。具体如下: 下面的代码片段通过判断DataSet的Table数量来判断DataSet是否为空 希望本文所述对大家的C#程序设计有所帮助。

  • 我使用高斯朴素贝叶斯(Gaussian Naive Bayes)从熊猫(Pandas)数据帧中训练模型,但使用precision\u recall\u曲线时出现错误。文档中说precision\u recall\u曲线将预测的概率作为输入(至少在我读到的时候),因此我希望下面的方法能够起作用(xtrain和xtest分别是736行和184行的熊猫数据帧;ytrain/ytest分别是736行和18