python - 使用os.system异步,独立于python进程?

标签 python asynchronous process system

当使用os.system打开文件时,例如:os.system(r'C:/foo.txt'),当前Python进程,当然,等待系统调用返回。 (即:文本编辑器关闭)。
我必须使用线程来使其异步吗?

想象一下以下情况:

我正在使用 Python 编写 Windows 文件管理器。用户单击一个文件。现在使用os.system(the_path_to_the_file_clicked)将使用注册表中设置的默认程序打开文件。
使用线程使系统调用异步可以很好地工作,但是当用户关闭文件管理器时怎么办? Python 进程将一直保持事件状态,直到线程退出,但这不是不必要的吗?另一方面,终止 Python 进程也会终止线程,程序将关闭。

有没有办法使用系统调用来打开一个独立于Python进程的新进程?

最佳答案

如果您想使用默认程序在 Windows 上打开文件,有一个特殊的函数可以独立于您自己的程序异步打开它:os.startfile 。这应该可以满足您的要求。

更一般地,对于异步运行程序,os.system 无法做到这一点。然而,the subprocess module能。 subprocess 模块几乎可以完成 os.system 所做的所有事情,甚至更多。但是,与 os.system 一样,当您使用 subprocess.Popen 时,该程序不会独立于您的进程而打开 - 当您的进程终止时,子进程也会终止。

关于python - 使用os.system异步,独立于python进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180857/

相关文章:

ios - 从 Swift 函数中的异步调用返回数据

c# - 使用异步套接字方法时延迟

c# - 自动从 C# 代码调试过程并读取寄存器值

Java 运行时进程不会 "Grep"

python - 如何在 Tensorflow 中使用动态 rnn 构建解码器?

python - 将 float 四舍五入到保留小数点后几位的最小数字

python - 移除 SDK 控制台中的无效条目

python - 返回默认值

swift - 同步和异步如何与线程安全一起工作?

c - 等待子进程终止,或不终止 - C