Linux 有没有办法通过系统调用确定STDIN是否为TTY?

Linux 有没有办法通过系统调用确定STDIN是否为TTY?,linux,macos,assembly,system-calls,Linux,Macos,Assembly,System Calls,我知道标准C库中有intisatty(intfiledes)函数。我想通过在Linux和OSX中进行系统调用来确定STDIN是否是TTY(我正在编写FORTH-in程序集,不想链接到C库) isatty()通过尝试在文件描述符上执行来工作。如果它成功了,那就是TTY。但是在BSD风格(如OS X)中,它是TIOCGETA,而不是TCGETS。libc抽象了大部分平台系统调用差异。您可能想重新考虑不使用它,否则您将重新编写大部分。您是否研究过libc的实现,以了解isatty是如何实现的?

我知道标准C库中有
intisatty(intfiledes)
函数。我想通过在Linux和OSX中进行系统调用来确定STDIN是否是TTY(我正在编写FORTH-in程序集,不想链接到C库)

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

但是在BSD风格(如OS X)中,它是TIOCGETA,而不是TCGETS。libc抽象了大部分平台系统调用差异。您可能想重新考虑不使用它,否则您将重新编写大部分。您是否研究过libc的实现,以了解
isatty
是如何实现的?