问题标签 [popen]

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 回答
349 浏览

windows - 使用 IO.popen 等时弹出 DOS 窗口

我正在为 Windows XP 开发一个 GUI。%x()一切都很好,除了当我通过反引号、 、等运行外部命令时IO.popen,我得到一个 DOS 窗口,它会在一瞬间弹出。我知道当我在 OS X 和 Linux 上开发时不会发生这种情况。关于如何摆脱它的任何想法?(或者至少隐藏它?)

我使用rubyw1.8.6(Windows 版 Ruby 的“GUI 版本”)和 GTK2 作为界面。

0 投票
5 回答
11302 浏览

python - Python - 捕获 Popen 标准输出并在控制台上显示?

我想从一个长时间运行的进程中捕获标准输出,subprocess.Popen(...)因此我将stdout=PIPE其用作 arg。

但是,因为这是一个长时间运行的过程,我还想将输出发送到控制台(好像我没有通过管道传输它一样),让脚本的用户知道它仍在工作。

这是可能吗?

干杯。

0 投票
3 回答
1565 浏览

winapi - 如何制作隐藏的一次性控制台应用程序并与之通信?

我编写了一个小型控制台应用程序来包装有问题的第三方 DLL。我正在使用_popen从 GUI 应用程序调用它,并且只想从控制台程序的标准输出中读取一个值。这样做时,会短暂显示一个不需要的控制台窗口。

我知道这可以通过使用带有 CreateProcess 的某个 STARTUPINFO 配置来避免。但是,我更愿意将修复程序放在控制台应用程序中并仍然使用 _popen。使用 windows 子系统(即 WinMain 而不是 main)创建子进程不会使控制台窗口消失。显然,操作系统分配了一个控制台来方便 _popen 通信。

请注意,第三方 DLL 不稳定,但需要与专有硬件接口。因此,任何在 GUI 应用程序内存空间中加载 DLL 的方法都是不可接受的。

0 投票
1 回答
1181 浏览

c - 忽略单个弹出文件的 SIGPIPE*

我正在查看的代码在这里:

http://github.com/andymatuschak/Sparkle/blob/8ea15468b4a8c0487ca7a72f3c9e6ffb708c6af8/SUPipedUnarchiver.m

Sparkle 就像一个插件。它可以在多线程程序中实例化。因此,我不想调用 signal(SIGPIPE, SIG_IGN) (即忽略所有SIGPIPE),因为谁知道其他线程正在做什么/期待什么。

如何禁用通过 popen 打开的这个 FILE 指针的 SIGPIPE 信号?

0 投票
1 回答
2358 浏览

ssh - 在“ssh”的 popen() 上调用 fgets() 正在刷新调用进程的标准输入的开头(ptty 问题)

我现在已经将其缩减为一个最小的测试用例。到目前为止,我已经能够确定这是与 ssh 管道出现的伪终端有关的问题。在 ssh 调用中添加“-t -t”可以改善问题,因为现在需要再次调用 fgets() 才能导致问题。我怀疑 ssh 命令的 stderr 输出以某种方式解决了这个问题,现在我已将 stderr 重定向到 ssh 代码中的 stdout 以执行。我确实想知道“tcgetattr:无效参数”错误是否是问题的一部分,但我不确定如何摆脱它。它似乎来自存在的 -t -t 。我相信 -t -t 正朝着正确的方向发展,但我必须以某种方式为 stderr 设置伪终端,也许测试会正常工作?

生成文件:

test.c 源文件:

这表明它正在运行:

这表明它以失败的方式运行:

0 投票
4 回答
95328 浏览

python - 如何从 subprocess.Popen() 获取输出。proc.stdout.readline() 块,没有数据打印出来

我想要执行 Test_Pipe.py 的输出,我在 Linux 上尝试了以下代码,但没有成功。

Test_Pipe.py

调用者.py

线路proc.stdout.readline()被阻塞,所以没有数据打印出来。

0 投票
2 回答
1094 浏览

python - 在 Python 2.5 及以下版本不使用 shell 创建可执行进程

正如标题所说:

  1. subprocess模块不能使用,因为这应该适用于 2.4 和 2.5
  2. 不应生成 Shell 进程来传递参数。

为了解释 (2),请考虑以下代码:

如您所见os.systemos.popen通过系统外壳(“sh”)运行给定的命令(“foo”)。我不希望这种情况发生(否则,丑陋的“未找到”消息会在我无法控制的情况下打印到程序 stderr)。

最后,我应该能够将参数传递给这个程序(上例中的“arg”)。

在 Python 2.5 和 2.4 中如何做到这一点?

0 投票
2 回答
4953 浏览

python - 如何在 Python 2 中将字符串传递给 subprocess.Popen?

我想使用 Python (2.4/2.5/2.6) 运行一个进程Popen,并且我想给它一个字符串作为其标准输入。

我将编写一个示例,其中进程执行“head -n 1”其输入。

以下工作,但我想以更好的方式解决它,而不使用 echo

我尝试使用StringIO,但它不起作用:

我想我可以制作一个临时文件并在那里写入字符串——但这也不是很好。

0 投票
1 回答
2844 浏览

python - Python subprocess.Popen - 添加 GCC 标志会导致“无输入文件”错误

我正在构建一个 Python 脚本来自动化我的构建过程,它使用 subprocess.Popen 调用 GCC。我最初的尝试效果很好。

但是,一旦我将其他选项传递给 GCC,我就会收到错误“无输入文件”,如下所示:

任何想法可能导致此问题?

0 投票
5 回答
5932 浏览

c++ - 如何在 C/C++ 中的 Windows 下使用包含空格的路径名调用 popen()?

我正在尝试使用 mingw 调用 popen() ,如下所示:

但我无法让它工作。我认为这是一个引用的噩梦......