【发布时间】:2011-02-23 21:10:32
【问题描述】:
如果直接从 linux 控制台运行,我有一个应用程序需要表现不同。因此,如果用户通过 SSH 连接运行 FooBar,或者用户走到控制台并直接登录运行 FooBar,我希望它做一些不同的事情。
我需要调用什么 C API 来区分这两种情况?我在想我必须查看“tty/pts”信息(例如我在运行“ps axf”时看到的信息),但我不确定这是否是最佳解决方案,也不确定要调用什么 API获取该信息。
提示赞赏。 :)
【问题讨论】:
-
除了通过 SSH 连接之外,还有其他方法可以获得非 tty shell 会话。例如,现在在我的桌面上,我在 KDE 中使用 Konsole……我实际上在计算机上,但是当我运行
who时它显示为 pty。出于您的目的,这是否算作控制台或“ssh”会话?也许您应该编辑您的问题以使其更清楚。 -
我认为你在问两个不同的事情......实际的问题似乎是如何判断你是在本地 X 终端还是通过 ssh 会话运行。 “Linux 控制台”通常是指使用 [Ctrl+]Alt+F2 等访问的硬件控制台。如果 $TERM == "linux",则可以检测到后者。