如何在python中进行fork或非阻塞系统调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在python中进行fork或非阻塞系统调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1175字,纯文字阅读大概需要2分钟。
内容图文
这与this question有关,但有不同的看法.
在Ubuntu中,我使用Autokey,它使用python自动化它观察到的击键.所以我有< super> e映射到打开Gedit,< shift> <超级> 3打开OOwriter等等.当我拨打其中一个电话时,我不能再拨打另一个电话,直到上一个被叫的节目退出.
以下是它执行的脚本示例:
import subprocess
subprocess.call("/opt/openoffice.org3/program/scalc")
…使用相同的行为:
import os
os.system("/opt/openoffice.org3/program/scalc")
这一切都在我之前的Ubuntu 10.04LTS中顺利运行,但事情发生了变化,我不能再重复这些调用了.
你能不能帮我解决如何分叉或做一些事情从subprocess.call()“回来”而不等待程序退出?我试过nohup和后台/opt/openoffice.org3/program/scalc&但那些什么都不做(可能在Autokey和Py中打破了一些东西)
答:下面的答案实际上并没有起作用,但让我窥探更多,我发现另一个SO answer对我的情况有效!
#Enter script code -- mapped to <super>+e
import thread
thread.start_new_thread(os.system,('gedit',))
这完全奏效!!我可以点击< super>连续2或3次,它不断添加标签到gedit. :)此脚本使Autokey的行为就像在命令行中键入引号中的命令一样.
解决方法:
它就像使用Popen而不是调用一样简单:
import subprocess
subprocess.Popen("/opt/openoffice.org3/program/scalc")
call应该永远不会那样,因为它必须返回退出代码,这意味着程序实际上必须退出.
内容总结
以上是互联网集市为您收集整理的如何在python中进行fork或非阻塞系统调用全部内容,希望文章能够帮你解决如何在python中进行fork或非阻塞系统调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。