2017-01-28 54 views
3

我知道有int isatty(int filedes)函数,但是这个在标准的C库中。我想通过在Linux和OSX中进行系统调用来确定STDIN是否是TTY(我正在编写一个FORTH程序集,并且我不想链接到C库)。有没有办法通过系统调用来确定STDIN是否是TTY?

+2

libc将大部分平台系统调用差异抽象出来。你可能想重新考虑不使用它,否则你最终会重写大部分内容。 – Keith

+0

你看过libc的实现,看看'isatty'是如何实现的吗? – fuz

回答

1

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

+4

但是在BSD风格(如OS X)中,它是TIOCGETA,而不是TCGETS。 – Netch

相关问题