【问题标题】:Is there a way to determine if STDIN is a TTY through a system call?有没有办法通过系统调用来确定 STDIN 是否是 TTY?
【发布时间】:2017-06-13 21:17:24
【问题描述】:

我知道有 int isatty(int filedes) 函数,但这是在标准 C 库中。我想通过在 Linux 和 OSX 中进行系统调用来确定 STDIN 是否是 TTY(我正在用汇编编写 FORTH,我不想链接到 C 库)。

【问题讨论】:

  • libc 抽象出大部分平台系统调用差异。您可能需要重新考虑不使用它,否则您最终会重写大部分内容。
  • 你有没有研究过 libc 的实现,看看isatty 是如何实现的?

标签: linux macos assembly system-calls


【解决方案1】:

isatty() 通过尝试在文件描述符上执行 the TCGETS ioctl 来工作。如果成功,它就是一个 TTY。

【讨论】:

  • 但在 BSD 风格(如 OS X)中,它是 TIOCGETA,而不是 TCGETS。
猜你喜欢
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2018-09-06
  • 2010-09-12
  • 2011-08-26
  • 2017-07-08
相关资源
最近更新 更多