linux - 如何判断是在 linux 控制台还是在 ssh session 中运行?

标签 linux console tty

如果直接从 Linux 控制台运行,我有一个应用程序需要有不同的行为。因此,如果用户使用 SSH 连接以运行 FooBar,或者用户走到控制台并直接登录以运行 FooBar,我希望它做一些不同的事情。

我需要调用什么 C API 来区分这两种情况?我想我必须查看“tty/pts”信息(例如我在运行“ps axf”时看到的信息),但我不确定这是否是最佳解决方案,也不确定调用什么 API获取该信息。

感谢提示。 :)

最佳答案

根据您对它被欺骗的担心程度,一个简单的检查是 SSH_CLIENT 和 SSH_CONNECTION 环境变量是否存在,在这种情况下您需要 getenv功能。

关于linux - 如何判断是在 linux 控制台还是在 ssh session 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2908044/

相关文章:

ruby-on-rails - 在 ./script/console 中显示 ActiveRecord 对象,例如 table

tty - 为什么 terminfo[kcuu1] = '\EOA' ?

ssh - screen "Must be connected to a Terminal."

我可以为所有 Linux 编译器使用一个 Linux .so 吗?

linux - 根据第一列的值删除条目

Raspi Linux 上的 JavaFX - 阶段没有窗口

shell - 在后台 shell 脚本中使用 netcat/cat(如何避免停止(tty 输入)?)

php - POST 的大小限制

ios - 用 println() 打印 `po` 对象描述?

c++ - 文件输出8192个字符后停止