python - 启动程序不会启动应用程序

标签 python linux

我正在用 Python 编写一个简单的程序,它可以启动我当天需要的程序,并在我喝咖啡时根据需要放置它们。下面是启动和定位 Chrome 的函数示例。

def chrome():
    Popen(['google-chrome'], stdout=os.open(os.devnull, os.O_RDWR), stderr=STDOUT)
    time.sleep(5)
    call(["/usr/bin/wmctrl", "-r", "Chrome", "-e", "0,1356,0,1200,1055"])

当我登录时,Chrome 无法打开。但是,当我运行 $ python boot.py 时,它会打开 Chrome,等待 5 秒,然后使用 wmctrl 定位窗口以及其他未打开的应用程序。

我有通过设置 python/home/rony/Documents/python/boot.py 在启动应用程序中启动的程序,我知道它正在执行,因为 Skype 启动了。启动 Skype 应用程序和 Chrome 之间的唯一区别是我使用 call('skype') 而不是 Popen()

Popen() 似乎没有在登录时打开我的应用程序的原因是什么?

最佳答案

我提到我使用了 call('skype') 而不是 Popen()。这是因为我可以调用 Skype,并且实例不会像 Chrome 和 Thunderbird 那样绑定(bind)到终端。由于某种原因在启动时,每当执行 call() 的实例时,它都会阻止程序的其余部分执行。每当我从终端运行程序时都不会发生这种情况。

我认为问题是 Popen() 没有运行,但结果是 call() 不允许。将 call('skype') 更改为 Popen('skype') 已解决我的问题。

关于python - 启动程序不会启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20069565/

相关文章:

python - 如何在for循环中迭代不同的值?

Python 2.7 - 如何以编程方式从 stdin 读取二进制数据

c# - 如何在 TextView 控件中剪切、复制、粘贴和全选?

c++ - Boost为同一个线程获取多个锁

linux - 同步而不扫描单个文件?

linux - Linux Shell 脚本中的动态注释更改

python - Bash while 循环调用 Python 脚本

python - 为什么字符串对象的 IronPython str() 会引发 UnicodeEncodeError?

python - 在一个函数中强制将一个函数的语言环境设置为英国/英语,以便 datetime.strftime 始终返回英语格式

linux - Centos 7无法访问文件目录和文件