Python 运行守护进程子进程并读取标准输出

2024-04-07

我需要运行一个程序并将其输出收集到标准输出。该程序 (socat) 需要在 python 脚本运行期间在后台运行。 Socat 一旦运行就会处于守护进程模式,但首先它会将一些行输出到标准输出,我的脚本的其余部分需要这些行。

命令:socat -d -d PTY: PTY:

Output:

2011/03/23 21:12:35 socat[7476] N PTY is /dev/pts/1
2011/03/23 21:12:35 socat[7476] N PTY is /dev/pts/2
2011/03/23 21:12:35 socat[7476] N starting data transfer loop with FDs [3,3] and [5,5]

...

我基本上想在程序开始时运行它并让它运行直到脚本终止,但我需要将两个 /dev/pts/X 名称读入 python 中。

谁能告诉我该怎么做?

我想出了这个,它只是挂起,我猜是因为它阻止了子进程的终止。

#!/usr/bin/python
from subprocess import Popen, PIPE, STDOUT

cmd = 'socat -d -d PTY: PTY: &'

p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
output = p.stdout.read()

# Process the output 
print(output)

谢谢你的帮助

编辑:似乎它可能会写入 stderr,但脚本仍然只是在有或没有 & 甚至从 stderr 读取的情况下挂起。


#!/usr/bin/python
from subprocess import Popen, PIPE
import pty
import os

cmd = 'socat -d -d PTY: PTY:'

master, slave = pty.openpty()

p = Popen(cmd, shell=True, stdin=PIPE, stdout=slave, stderr=slave, close_fds=True)
stdout = os.fdopen(master)
print stdout.readline()
print stdout.readline()

你的版本有两个问题。首先,您调用 read 时不带参数,这意味着它将尝试读取所有内容。但由于 socat 不会终止,因此它永远不会决定它已读取所有内容。通过使用 readline,python 只会读取直到找到换行符。根据我对你问题的理解,这就是你所需要的。

第二个问题是 C 标准库将缓冲管道上的输出。我们通过使用 openpty() 函数创建一个 pty 并将其传递给子进程的 stdout 和 stderr 来解决这个问题。我们使用 fdopen 将该文件描述符变成常规的 python 对象,并摆脱缓冲。

我不知道你用 socat 做什么,但我想知道是否可以使用 pty 模块来替换它。您正在将一个 pty 复制到另一个 pty,并且 openpty 正在创建一对 pty。也许你可以直接使用它们?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 运行守护进程子进程并读取标准输出 的相关文章

  • 如何更改 FacetGrid 中的边距标题颜色

    使用 Seaborn Facet Grids 如何仅更改边距标题的颜色 注意g set titles color red 更改两个标题 p sns load dataset penguins sns displot data p x fli
  • 阻止 TensorFlow 访问 GPU? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以纯粹在CPU上运行TensorFlow 我机器上的所有内存都被运行 TensorFlow 的单独进程占用 我尝试将 per process memory fraction 设置为 0 但未成功
  • 从 SHAP 值中获取特征重要性

    我想要获得重要功能的数据框 通过下面的代码 我得到了 shap values 但我不确定这些值的含义是什么 在我的 df 中有 142 个特征和 67 个实验 但得到了一个带有 ca 的数组 2500 个值 explainer shap T
  • 检测到通过 ChromeDriver 启动的 Chrome 浏览器

    我正在尝试在 python 中使用 selenium chromedriver 来访问 www mouser co uk 网站 然而 从第一次拍摄开始 它就被检测为机器人 有人对此有解释吗 此后我使用的代码 options Options
  • 如何在 Jupyter Notebook 中运行 Python 异步代码?

    我有一些 asyncio 代码在 Python 解释器 CPython 3 6 2 中运行良好 我现在想在具有 IPython 内核的 Jupyter 笔记本中运行它 我可以运行它 import asyncio asyncio get ev
  • Pyqt-如何因另一个组合框数据而更改组合框数据?

    我有一个表 有 4 列 这 4 列中的两列是关于功能的 一个是特征 另一个是子特征 在每一列中 所有单元格都有组合框 我可以在这些单元格中打开txt 我想 当我选择电影院作为功能时 我只想看到子功能组合框中的电影名称 而不是我的 数据 中的
  • 无故运行测试时 PyCharm 抛出“AttributeError: 'module' object has no attribute”

    因此 我有一个 Django REST Framework 项目 有一天它无法在 PyCharm 中运行测试 从命令行我可以使用它们来运行它们paver or the manage py直接地 曾经有一段时间 当我们没有在文件顶部导入类的超
  • 字符串中的注释和注释中的字符串

    我正在尝试使用 Python 和 Regex 计算 C 代码中包含的注释中的字符数 但没有成功 我可以先删除字符串以删除字符串中的注释 但这也会删除注释中的字符串 结果会很糟糕 是否有机会通过使用正则表达式来询问不匹配注释中的字符串 反之亦
  • 如何在Python中高效地添加稀疏矩阵

    我想知道如何在Python中有效地添加稀疏矩阵 我有一个程序 可以将大任务分解为子任务 并将它们分配到多个 CPU 上 每个子任务都会产生一个结果 一个 scipy 稀疏矩阵 格式为 lil matrix 稀疏矩阵尺寸为 100000x50
  • 编辑 Jupyter Notebook 时 VS Code 中缺少“在选择中查找”

    使用 Jupyter Notebook 时 VSCode 中缺少 在选择中查找 按钮 它会减慢开发速度 所以我想请问有人知道如何激活它吗 第一张图显示了在 python 文件中的搜索 替换 第二张图显示了笔记本电脑中缺少的按钮 Python
  • 在相同任务上,Keras 比 TensorFlow 慢

    我正在使用 Python 运行斩首 DCNN 本例中为 Inception V3 来获取图像特征 我使用的是 Anaconda Py3 6 和 Windows7 使用 TensorFlow 时 我将会话保存在变量中 感谢 jdehesa 并
  • Alembic:如何迁移模型中的自定义类型?

    My User模型是 class User UserMixin db Model tablename users noinspection PyShadowingBuiltins uuid Column uuid GUID default
  • 迭代列表的奇怪速度差异

    我创建了两个重复两个不同值的长列表 在第一个列表中 值交替出现 在第二个列表中 一个值出现在另一个值之前 a1 object object 10 6 a2 a1 2 a1 1 2 然后我迭代它们 不对它们执行任何操作 for in a1 p
  • 如何在 Azure 数据工厂 - Databricks 中使用 continuation_token 获取 ADF Pipeline 运行详细信息的下一页?

    我在用 adf client pipeline runs query by factory resourceGroupName 工厂名称 过滤器参数 的方法azure mgmt datafactory DataFactoryManageme
  • Werkzeug 中的线程和本地代理。用法

    首先 我想确保我正确理解了功能的分配 分配本地代理功能以通过线程内的模块 包 共享变量 对象 我对吗 其次 用法对我来说仍然不清楚 也许是因为我误解了作业 我用烧瓶 如果我有两个 或更多 模块 A B 我想将对象C从模块A导入到模块B 但我
  • 为什么我应该使用 WSGI?

    使用 mod python 一段时间了 我读了越来越多关于 WSGI 有多好的文章 但没有真正理解为什么 那么我为什么要切换到它呢 有什么好处 这很难吗 学习曲线值得吗 为了用 Python 开发复杂的 Web 应用程序 您可能会使用更全面
  • Flask 应用程序的测试覆盖率不起作用

    您好 想在终端的 Flask 应用程序中测试 删除路由 我可以看到测试已经过去 它说 test user delete test app LayoutTestCase ok 但是当我打开封面时 它仍然是红色的 这意味着没有覆盖它 请有人向我
  • 带有 RotatingFileHandler 的 Python 3 记录器超出 maxBytes 限制

    我使用以下代码来限制日志文件的大小 最小示例 import logging from logging handlers import RotatingFileHandler Set up logfile and message loggin
  • bs4 `next_sibling` VS `find_next_sibling`

    我在使用时遇到困难next sibling 并且类似地与next element 如果用作属性 我不会得到任何返回 但如果用作find next sibling or find next 然后就可以了 来自doc https www cru
  • python 中的 after() 与 update()

    我是 python 新手 开始使用 tkinter 作为画布 到目前为止 我使用 update 来更新我的画布 但还有一个 after 方法 谁能给我解释一下这个函数 请举个例子 两者之间有什么区别 root after integer c

随机推荐

  • Flutter实现重复弹性动画

    为了实现这个动画 我写了下面的代码 但是 弹性动画在项目中不起作用 我不确定有什么问题 我想重复这个动画 import package flutter material dart void main gt runApp MaterialAp
  • 为什么 nhibernate 需要 Log4Net?

    我将使用 asp net mvc3 和 nhibernate 3 2 构建我的应用程序 我决定使用 Elmah 记录所有错误消息 我记得 nhibernate 支持 log4net 并用它来记录所有查询 如果我不关心将查询输出到日志文件 我
  • 将参数传递给 pentaho CDE 报告

    我在此报告中创建了一个 CDE 参数报告 我想通过 url 传递参数 我的 CDE 报告链接如下 http localhost 8080 pentaho content pentaho cdf dd Render solution demo
  • 如何从该函数中获取函数名称?

    如何从函数内部访问函数名称 parasitic inheritance var ns parent child function var parent new ns parent parent newFunc function return
  • 如何使用 afconvert 将 .caf 转换为 .mp3 格式? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 afconvert 命令行实用程序来转换音频文件 caf to mp3格式 我用过afconvert afconvert f
  • Android 帐户验证器编辑电子邮件 ID 凭据

    当我登录时 电子邮件受保护 cdn cgi l email protection在我的应用程序中 它使用我的电子邮件成功生成帐户 如下所示 现在我注销并使用不同的电子邮件登录 例如 电子邮件受保护 cdn cgi l email prote
  • 在 bash 中对退出代码进行 AND 运算

    我有一个 bash 脚本 它对我的 源代码运行三项检查 然后exit 0如果所有命令都成功 或者exit 1如果其中任何一个失败 bin bash test1 src test 1 option exit 1 test2 src test
  • Shell_NotifyIconA / Shell_NotifyIconW ...有什么区别?

    我正在将一些 Win32 代码移植到 C 并且遇到了几个具有相同名称并使用相同结构的函数 只是它们以 A 和 W 结尾 例如 return MarshalAs UnmanagedType Bool DllImport shell32 dll
  • 嵌套类定义在外部类之外,而外部类包含内部类的实例

    C 如何将内部 嵌套 类的定义放在其外部 封闭 类的定义之外 其中外部类至少有一个内部类实例作为数据成员 我搜索了但我找到的最相关的答案 源文件中的嵌套类定义 https stackoverflow com questions 448200
  • 我的应用程序由于 Android 上的权限问题而终止

    我正在编写这段代码来获取 GPS 位置 我已经 在 Android 属性上标记了 ACCESS COARSE LOCATION 和 ACCESS FINE LOCATION 我还确认了它是否在 AndroidManifest xml 中 但
  • 关闭键盘 - iOS 7 中的多个 UITextField

    下面您将找到我的主视图控制器的 h 和 m 文件 我有 3 个问题 1 因为我有多个 uitextfields 我是否必须为每个字段设置自己的 resignFirstResponder 语句 2 我会在哪里 用什么方法做到这一点 3 我辞去
  • UIButton 第一次点击后不可点击

    我试图在单击按钮时从底部引入一个子视图 但只有第一次该按钮是可点击的 动画按钮后第二次单击不可单击 这是代码 class AnimateView UIView var button UIButton var menuView UIView
  • 我在Excel中有3个时间段 - 我需要知道最长连续时间段的持续时间

    请帮忙 理想情况下 我真的很想仅使用公式来解决这个问题 而不是 VBA 或任何我认为 花哨 的东西 我所工作的项目为持续参与提供奖金 我们有三个 有时更多 参与时间段 这些时间段可能会重叠和 或可能有没有参与的空间 神奇的数字是 84 天的
  • 如何在另一个线程中设置文本视图的文本

    我试图在另一个线程 即子线程 中设置文本 但对于以下代码 它给出了错误 只有创建视图层次结构的原始线程才能触摸其视图 public void onCreate Bundle savedInstanceState super onCreate
  • 为什么 eclipse 无法正确部署我的动态 Web 项目?

    问题是 我在源代码控制下有一个 java 动态 Web 项目 并在我的 Eclipse 工作区中检出 之前 我能够从 eclipse 中在本地 Tomcat 服务器上运行 servlet 但是 我进行了一些更改 删除了一些文件并添加了一些新
  • 如何在 JavaScript 中旋转图像?

    我想在单击打开按钮时旋转风扇图像 单击关闭按钮 旋转停止 我的代码是 img src fan png width 200 br
  • Android 支持库 ActionBar NullPointerException 版本 2.2(级别 8) - 与preferences.xml冲突

    我正在使用 v7 支持库在 Android 2 x 上显示 ActionBar 当我将应用程序部署到 IDE Intellij IDEA 中的设备时 应用程序运行正常 当我使用 maven 构建并打包要部署到 Play 商店的应用程序时 我
  • 在 IPython Notebook 之间共享数据

    如果我有多个 IPython 笔记本在同一台服务器上运行 有什么办法可以在它们之间共享数据吗 例如 从另一个笔记本导入变量 谢谢 这对我有用 store 命令允许您在两个不同的之间传递变量 笔记本 data 这是我想要传递到不同笔记本的字符
  • DateTimePicker 控件不显示 AM/PM

    我在使用自定义格式 其中包括两个字母的 A M P M 的 DateTimePicker 控件时遇到问题 缩写 使用 en US CultureInfo DateTimeFormat ShortTimePattern 会导致 时 嗯tt 但
  • Python 运行守护进程子进程并读取标准输出

    我需要运行一个程序并将其输出收集到标准输出 该程序 socat 需要在 python 脚本运行期间在后台运行 Socat 一旦运行就会处于守护进程模式 但首先它会将一些行输出到标准输出 我的脚本的其余部分需要这些行 命令 socat d d