python - 如何写入另一个Python进程的STDIN?

标签 python python-2.7 process stdout stdin

我有一个Python程序,其代码包含以下片段:

def Main():
    pid = os.getpid()
    print 'Process id: {}'.format(pid)

然后,在代码的其他部分,它继续监听其 STDIN

此过程输出以下内容:

Process id: 3824

我想从另一个 Python 进程写入上面进程的 STDIN,给定其 PID

我的问题是:我需要什么代码才能从第二个进程中执行此操作?

我使用的是Windows

最佳答案

程序只能重定向其创建的进程(“子进程”)的标准输入和输出。要使用标准输出与另一个进程对话,该进程必须已经在监听您的声音。

操作系统控制进程的文件描述符所引用的内容。也就是说,进程的 stdin 将由操作系统和程序执行的上下文决定。要允许进程间通信,您可以查看操作系统为此提供的设施,例如 using a shell script and the piping operator .

您需要的是一个命名管道,它基本上是一个类似文件的对象,您可以对其进行写入和读取,并且充当进程之间的桥梁。不幸的是,Python 似乎在 Windows 上没有对此的“ native ”支持。您需要python for windows extension为此。

或者,您可以使用socket .

关于python - 如何写入另一个Python进程的STDIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657562/

相关文章:

Python - 同时遍历 2 个列表

python - 杀死通过 sudo 启动的子进程

python - 内置将函数应用于列表的连续成员并返回新列表的方法

.net - 如何使用 .NET 以编程方式沙箱进程

multithreading - 上下文切换的步骤

vb.net - 如何按用户杀死进程?

python - 在 Excel 中用 "0"替换 Nan 值和空白单元格。我的代码还将文本替换为 "0"

python - 生成 n 个箱子中 k 个球的所有可能结果(多项式/分类结果的总和)

python - 从Python中包含某些特定数字的列表中删除数字

python - 在 MATPLOTLIB 中一一显示两个条形图