为什么Unix和Windows之间的Python子进程Popen如此不同?

丹佛

我正在尝试用Python编写跨平台代码。该代码应生成新的shell并运行代码。

这使我着眼于Python的subprocess工具,尤其是它的Popen一部分。因此,我通读了此类Popen doc的文档,发现太多“如果在Unix上/如果在Windows上”的语句。不太跨平台,除非我误解了文档。

到底是怎么回事?我知道这两个操作系统是不同的,但实际上,没有办法编写一个公共接口吗?我的意思是,相同的参数“窗口比UNIX不同”可以适用于ossystem等等,它们似乎都100%跨平台的。

金属怪胎

问题在于,流程管理是操作系统中根深蒂固的东西,不仅在实现上有很大的不同,甚至在基本功能上也有很大的不同。实际上,例如在os类中抽象代码通常很容易。* nix或Windows这两个C库都将读取文件作为I / O流来实现,因此您甚至可以编写相当低级的文件操作功能,这些功能在Windows和* nix中均相同。

但是过程差别很大。例如,在* nix中,进程都是分层的,每个进程都有一个父进程,并且所有进程都返回在PID 1下运行的init系统。通过分叉自身,检查它是父进程还是子进程来创建一个新进程,然后继续进行相应操作。在Windows中,进程绝对是非分层的,并由CreateProcess()系统调用创建,为此您需要特殊的特权。还有很多不同之处,这些只是两个示例,但是我希望它表明实现独立于平台的进程库是一项非常艰巨的任务。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Unix和Windows之间的Python子进程Popen如此不同?

来自分类Dev

为什么zip和rm命令之间的通配符*如此不同?

来自分类Dev

Unicode和子进程.Popen

来自分类Dev

为什么知道.call()和.apply()之间的区别如此重要?

来自分类Dev

为什么R hist和ggplot直方图输出如此不同?

来自分类Dev

为什么R hist和ggplot直方图输出如此不同?

来自分类Dev

为什么代表1.0和2.0的位串如此不同?

来自分类Dev

为什么auc与sklearn和R的逻辑回归如此不同

来自分类Dev

为什么流(通过LAN)的速度和质量如此不同?

来自分类Dev

为什么我的Sublime Text3和VS Code之间的80字符标尺如此不同?

来自分类Dev

为什么子进程行为如此奇怪?

来自分类Dev

进程管理代码在Linux和Windows上的行为不同-为什么?

来自分类Dev

为什么子进程popen给出typeError

来自分类Dev

为什么在使用子进程(python)启动应用程序(windows)时更改了参数?

来自分类Dev

为什么Windows上的sh不能正确使用Python的子进程调用?

来自分类Dev

Python子进程.Popen使用git pager

来自分类Dev

Python子进程/ Popen标准输出被截断

来自分类Dev

Python对Popen子进程使用超时

来自分类Dev

Python子进程Popen传递参数

来自分类Dev

python子进程popen立即启动

来自分类Dev

Python子进程/ Popen标准输出被截断

来自分类Dev

子进程 Popen 运行 python 命令

来自分类Dev

为什么GCD,ObjC和Swift之间的性能差距如此之大

来自分类Dev

为什么“大小”和“磁盘大小”之间有如此大的差异?

来自分类Dev

为什么驱动程序类(“ static void main”)和类定义如此不同?

来自分类Dev

为什么代表1.0和2.0的位字符串如此不同?

来自分类Dev

为什么计划时间和执行时间与Postgres如此不同?

来自分类Dev

为什么Truecrypt和cryptsetup(LUKS)基准测试的结果如此不同?

来自分类Dev

为什么可变和不可变集中的类型推断的行为如此不同?

Related 相关文章

  1. 1

    为什么Unix和Windows之间的Python子进程Popen如此不同?

  2. 2

    为什么zip和rm命令之间的通配符*如此不同?

  3. 3

    Unicode和子进程.Popen

  4. 4

    为什么知道.call()和.apply()之间的区别如此重要?

  5. 5

    为什么R hist和ggplot直方图输出如此不同?

  6. 6

    为什么R hist和ggplot直方图输出如此不同?

  7. 7

    为什么代表1.0和2.0的位串如此不同?

  8. 8

    为什么auc与sklearn和R的逻辑回归如此不同

  9. 9

    为什么流(通过LAN)的速度和质量如此不同?

  10. 10

    为什么我的Sublime Text3和VS Code之间的80字符标尺如此不同?

  11. 11

    为什么子进程行为如此奇怪?

  12. 12

    进程管理代码在Linux和Windows上的行为不同-为什么?

  13. 13

    为什么子进程popen给出typeError

  14. 14

    为什么在使用子进程(python)启动应用程序(windows)时更改了参数?

  15. 15

    为什么Windows上的sh不能正确使用Python的子进程调用?

  16. 16

    Python子进程.Popen使用git pager

  17. 17

    Python子进程/ Popen标准输出被截断

  18. 18

    Python对Popen子进程使用超时

  19. 19

    Python子进程Popen传递参数

  20. 20

    python子进程popen立即启动

  21. 21

    Python子进程/ Popen标准输出被截断

  22. 22

    子进程 Popen 运行 python 命令

  23. 23

    为什么GCD,ObjC和Swift之间的性能差距如此之大

  24. 24

    为什么“大小”和“磁盘大小”之间有如此大的差异?

  25. 25

    为什么驱动程序类(“ static void main”)和类定义如此不同?

  26. 26

    为什么代表1.0和2.0的位字符串如此不同?

  27. 27

    为什么计划时间和执行时间与Postgres如此不同?

  28. 28

    为什么Truecrypt和cryptsetup(LUKS)基准测试的结果如此不同?

  29. 29

    为什么可变和不可变集中的类型推断的行为如此不同?

热门标签

归档