代码之家  ›  专栏  ›  技术社区  ›  Thomas Ahle

Python:何时使用pty.fork()与os.fork()比较

  •  13
  • Thomas Ahle  · 技术社区  · 15 年前

    pty.fork() os.fork() 从我的应用程序生成外部后台进程时(例如象棋引擎)

    如果父进程被杀死,我希望生成的进程死亡,就像终端中的生成应用一样。

    3 回复  |  直到 15 年前
        1
  •  11
  •   Denis Otkidach    15 年前

    使用创建的子进程 os.fork() 从父进程继承stdin/stdout/stderr,而子进程是使用 pty.fork() 连接到新的伪终端。在编写类似xterm的程序时,您需要稍后的命令: 叉子 在父进程中,返回一个描述符来控制子进程的终端,所以您可以直观地表示来自它的数据,并将用户操作转换为终端输入序列。

    更新:

    从pty(7)手册页:

    对于一个终端,可以打开从端 一个伪终端的 打开主端。任何 写在主端的是 提供给从机上的进程 结束,就好像它是在上面输入的一样 终点站。例如,编写 控制(C)至主设备 会引起一个中断信号 (SIGINT)将为 前台进程组,即 连接到从机。相反地 伪终端can的从端 通过以下过程进行读取:

        2
  •  4
  •   Bryan McLemore    15 年前

    过去我总是使用 subprocess

    你可以用 call(*popenargs, **kwargs) 阻止他们的执行,我相信 Popen

    查看 docs 更多信息。

    至于使用 os.fork vs pty.fork ,两者都高度依赖于平台,两者都无法在windows上运行(或至少经过测试)。这个 pty 通过阅读文档,模块似乎是这两个模块中约束性更强的模块。主要区别在于伪终端方面。因此,如果您不愿意以能够使用 子流程 而不是 叉子 .

        3
  •  2
  •   pavlix    12 年前