Linux如何编程,例如bash或python脚本,知道它是如何启动的:从命
发布时间:2020-12-14 01:36:56 所属栏目:Linux 来源:网络整理
导读:我想做以下事情: 如果从终端启动bash / python脚本,它将执行诸如打印错误消息文本之类的操作.如果从GUI会话启动脚本,例如双击文件浏览器,它将执行其他操作,例如显示GUI消息框. 解决方法 您可以检查stdin和stdout是否连接到终端.从GUI运行时,通常stdin完全没
我想做以下事情:
如果从终端启动bash / python脚本,它将执行诸如打印错误消息文本之类的操作.如果从GUI会话启动脚本,例如双击文件浏览器,它将执行其他操作,例如显示GUI消息框. 解决方法
您可以检查stdin和stdout是否连接到终端.从GUI运行时,通常stdin完全没有连接,stdout连接到日志文件.从终端运行时,stdin和stdout都将连接到终端.
在Python中: import os import sys if os.isatty(sys.stdout.fileno()): # print error message text else: # display GUI message 但是,您应该检查这是否适合您,因为它不能完全满足您的要求.但这是我能想到的最好的东西,它不依赖于太多的魔法. 在使用GUI代码之前,您应该检查DISPLAY环境变量是否已设置,因为没有它,它将无法工作. 请注意,终端用户仍然可以将stdin或stdout重定向到/ dev / null(例如),这可能会导致程序使用GUI行为.所以它远非完美. 最后,即使我已经给你答案,请不要这样做!用户对程序的行为根据其调用方式进行更改会让人感到困惑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – SSD磁盘和10 Gbe网络的iSCSI性能不佳
- linux – termios.c_cflag中的CLOCAL和CRTSCTS标志如何影响
- linux – Perf annotate,仅显示源代码
- linux – 用于递归遍历文件夹和删除文件的Bash脚本
- ubuntu拒绝root用户ssh远程登录解决办法
- linux – 调用ssh时是否可以更改$TERM的值?
- 没有键盘我可以访问stdin吗?
- linux – 如何从/ var / spool / postfix / deferred读取邮
- linux – USB驱动器在复制时将名称从/ dev / sdb更改为/ de
- CentOS下升级Git1.7.1升级到Git2.2.1