问题标签 [subprocess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
72745 浏览

python - Python Subprocess.Popen 从一个线程

我正在尝试使用子进程模块和线程内的 Popen 启动“rsync”。在我调用 rsync 之后,我还需要读取输出。我正在使用通信方法来读取输出。当我不使用线程时,代码运行良好。看来,当我使用线程时,它会挂在通信调用上。我注意到的另一件事是,当我设置 shell=False 在线程中运行时,我没有从通信中得到任何回报。

0 投票
4 回答
18794 浏览

python - 带有隐藏窗口的跨平台子进程

我想在后台打开一个进程并与之交互,但是这个进程在Linux和Windows中都应该是不可见的。在 Windows 中,您必须使用 STARTUPINFO 做一些事情,而这在 Linux 中无效:

ValueError: startupinfo 仅在 Windows 平台上受支持

有没有比为每个操作系统创建单独的 Popen 命令更简单的方法?

0 投票
2 回答
12400 浏览

python - 在 Python 中与另一个命令行程序交互

我需要编写一个 Python 脚本,它可以运行另一个命令行程序并与它的标准输入和标准输出流进行交互。本质上,Python 脚本将从目标命令行程序中读取,通过写入其标准输入进行智能响应,然后再次从程序中读取结果。(它会反复这样做。)

我已经查看了 subprocess 模块,但我似乎无法让它完成我正在寻找的读/写/读/写的事情。还有什么我应该尝试的吗?

0 投票
2 回答
12251 浏览

python - Python - 子进程 - 如何在 Windows 中调用管道命令?

如何使用子进程运行此命令?

我试过了:

但得到:

我注意到的事情:

  1. 在 Windows 控制台上运行命令可以正常工作。
  2. 如果我移除 ECHO bosco| 部分,它在上面的 popen 调用中运行良好。所以我认为这个问题与echo或|有关。
0 投票
2 回答
816 浏览

python - subprocess 模块:使用带有 tempfile 对象的 call 方法

我使用临时文件库 NamedTemporaryFile 方法创建了临时命名文件。我已经写信给他们刷新了缓冲区,但我没有关闭它们(否则它们可能会消失)

我正在尝试使用该subprocess模块来使用这些生成的文件调用一些 shell 命令。

subprocess.call('cat %s' % f.name)总是失败说命名的临时文件不存在。

os.path.exists(f.name)总是返回真。我可以直接从 shell 对文件运行 cat 命令。

是否有某些原因该subprocess模块不适用于临时文件?

有什么办法让它工作吗?

提前致谢。

0 投票
5 回答
2775 浏览

python - 当我编写一个 python 脚本来运行 Devenv 并配置 "Debug|Win32" 它什么都不做

更新:当我使用subprocess.call而不是subprocess.Popen,问题就解决了——有人知道是什么原因吗?还有另一个问题:我似乎找不到控制输出的方法......有没有办法将输出重定向subprocess.call到字符串或类似的东西?谢谢!

我正在尝试使用Devenv来构建项目,当我在命令提示符下键入它时它运行得很好devenv A.sln /build "Debug|Win32"- 但是当我使用 python 使用与上面相同的行来运行它时,它什么也不显示Popen(cmd,shell=true)cmd如果我删除|,将其更改为"Debug"only,它可以工作....

有人知道为什么会这样吗?我试过放一个\before |,但仍然没有发生任何事情..

这是我正在使用的代码:

...这是行不通的,但是,如果我Debug|Win32用交换Debug,它可以完美地工作..

感谢这里的每一条评论

0 投票
4 回答
21423 浏览

python - 在 Python 2.5 中,我如何杀死一个子进程?

我正在使用 Python 中的 subprocess 包来运行一个子进程,稍后我需要将其杀死。但是, subprocess 包的文档指出 terminate() 函数仅在 2.6 中可用

我们正在使用 2.5 运行 Linux,出于向后兼容性的原因,我无法升级到 2.6,有什么替代方案?我猜这些函数是一些方便的方法。

0 投票
1 回答
1691 浏览

ruby - 如何在ruby中使用反引号开始获得子进程的连续输出

我有一个 ruby​​ 应用程序,它使用反引号将 ant 作为子进程执行。这工作没有任何问题。当我执行 putsant时,ruby 等待子进程 ant 完全完成,然后将输出打印到标准输出。如何让 ruby​​ 连续打印子进程的输出?

0 投票
2 回答
6448 浏览

python - 使用 Python 通过 STDIN/STDOUT 启动和控制外部进程

我需要启动一个外部进程,该进程将通过标准输入和标准输出来回发送的消息进行控制。使用 subprocess.Popen 我可以启动该过程,但无法根据需要通过 stdin 控制执行。

我要完成的流程是:

  1. 启动外部进程
  2. 迭代一些步骤
    1. 通过将换行符写入其标准输入来告诉外部进程完成下一个处理步骤
    2. 等待外部进程通过将换行符写入其标准输出来表示它已完成该步骤
  3. 关闭外部进程的标准输入以向外部进程指示执行已完成。

到目前为止,我提出了以下几点:

当我运行上述代码时,'\n' 不会与外部进程通信,并且我永远不会超出步骤 #0。代码在 process.communicate() 处阻塞,不再继续。我错误地使用了communicate() 方法?

另外,我将如何实现“等到外部进程写入新行”的功能?

0 投票
2 回答
2010 浏览

php - 如何从 PHP 运行进程

我需要通过网络调用 PHP 页面来启动 Unix 进程。我还需要向 PHP 页面发送一些参数,这些参数以保存方式替换到命令中。