问题标签 [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.
python - 如何从子进程中获取环境?
我想通过python程序调用一个进程,但是,这个进程需要一些由另一个进程设置的特定环境变量。如何获取第一个进程环境变量以将它们传递给第二个?
这是程序的样子:
但是要处理的过程不共享相同的环境。请注意,这些程序不是我的(第一个是又大又丑的 .bat 文件,第二个是专有软件)所以我不能修改它们(好吧,我可以从 .bat 中提取我需要的所有东西,但它非常精巧)。
注意:我使用的是 Windows,但我更喜欢跨平台解决方案(但我的问题不会发生在类 Unix 上......)
ruby - 查找当前标准输出或如何将输出重定向回控制台
我正在使用 Ubuntu 9.04 x64 并且,
我有一个文件startup.rb,我在其中调用sudo bash,因此我总是有一个根控制台来执行管理任务,而无需每 15 分钟左右输入密码。
该脚本由另一个脚本Startup.rb调用,两个文件的内容如下 -
文件~/Startup.rb
文件~/startup.rb
我已将~/Startup.rb文件包含在启动应用程序列表中。
现在的问题是,在 的终端中sudo bash
,如果我输入一些内容并期望得到一些输出,我什么也得不到。所以如果我写echo hello world
,我不会得到任何输出。这让我相信sudo bash
命令的标准输出(stdout)不是控制台。
所以,我想知道为什么会这样?我怎么知道当前的标准输出路径?或者如何将标准输出恢复到我当前的控制台?
- 谢谢
python - subprocess:删除Windows中的子进程
在 Windows 上,subprocess.Popen.terminate
调用 win32 的TerminalProcess
. 但是,我看到的行为是我试图终止的进程的子进程仍在运行。这是为什么?如何确保该进程启动的所有子进程都被杀死?
python - python子进程
我通常在 Linux 中(手动)执行 Fortran 文件:
- 连接到服务器
- 转到特定文件夹
ifort xxx.for -o xxx && ./xxx
(其中“xxx.for”是我的 Fortran 文件,“xxx”是 Fortran 可执行文件)
但是我需要从python(我是初学者)调用我的fortran文件(xxx.for),所以我使用subprocess
了以下命令:
但我得到一个错误,我不确定出了什么问题。这是完整的代码:
如何编写一个执行上述所有 3 个步骤并避免出现错误的 python 程序?
python - 在 Python 中禁用 subprocess.Popen 的控制台输出
我在 Windows 上运行 Python 2.5,并且在我拥有的代码中的某处
通过pid杀死IE窗口。问题是,如果没有在 Popen 中设置管道,我仍然会输出到控制台 - 成功:PID 2068 的进程已终止。我将它调试到 subprocess.py 中的 CreateProcess,但不能从那里开始。
任何人都知道如何禁用此功能?
python - 为什么带有 shell=True 的 subprocess.Popen() 在 Linux 和 Windows 上的工作方式不同?
当使用subprocess.Popen(args, shell=True)
运行“ gcc --version
”(仅作为示例)时,在 Windows 上我们得到:
所以它很好地打印出我所期望的版本。但在 Linux 上,我们得到这个:
因为 gcc 还没有收到这个--version
选项。
文档没有具体说明在 Windows 下 args 应该发生什么,但它确实说,在 Unix 上,“如果 args 是一个序列,第一项指定命令字符串,并且任何额外的项目都将被视为额外的 shell 参数。” 恕我直言,Windows 方式更好,因为它允许您将Popen(arglist)
呼叫视为与呼叫相同Popen(arglist, shell=True)
。
为什么这里有 Windows 和 Linux 的区别?
python - Python 子进程 - 将 stdout/err 重定向到两个地方
我有一个小的 python 脚本,它使用subprocess
. 我想将 stdout 和 stderr 重定向到日志文件和终端。
如何才能做到这一点?
python - python子进程模块:循环子进程的标准输出
我有一些使用 subprocess 模块运行的命令。然后我想循环输出的行。文档说不要做 data_stream.stdout.read 我不是,但我可能正在做一些调用它的事情。我正在像这样循环输出:
这是否会导致死锁,例如从 data_stream.stdout 读取,或者是否为这种循环设置了 Popen 模块,以便它使用通信代码但为您处理它的所有调用?
python - subprocess.call 的管道输出到进度条
我正在使用 growisofs 通过我的 Python 应用程序刻录 iso。我在两个不同的文件中有两个类;GUI() (main.py) 和 Boxblaze() (core.py)。GUI() 构建窗口并处理所有事件和内容,而 Boxblaze() 具有 GUI() 调用的所有方法。
现在,当用户选择了要刻录的设备和要刻录的文件时,我需要调用一个调用以下命令的方法:`
此命令应提供类似于以下内容的输出:
此命令在 Boxblaze() 中名为 burn() 的方法中运行。它看起来很简单:
现在我的问题如下:
如何从输出中获取进度(括号中的百分比)并将进度条设置为“跟随”该进度?我的进度条在 GUI() 类中调用,如下所示:
获取 = builder.get_object
self.progress_window = get("progressWindow")
self.progressbar = get("进度条")
我是否必须在单独的线程中运行此命令才能使 GUI 保持响应(以便我可以更新进度条并允许用户根据需要取消刻录)?如果是这样,我该怎么做并且仍然能够将进度传递到进度条?
如果您有兴趣,可以在 Launchpad 上找到完整的代码。如果您安装了集市,只需运行:
哦,如果你想知道,这个应用程序只适用于 Linux - 所以不要担心跨平台兼容性。
linux - <() 在 Bash 中做了什么?
在superuser.com 上的帖子回答中,我们看到
将文件 abc 和 bcd 排序,然后将它们发送到加入。这导致了一个编程问题,更适合stackoverflow。
这是如何运作的?这个 <() 结构到底是什么?它叫什么?
如果 (sort abc) 是在 abc 上运行 sort 并返回输出的合法调用,为什么我们需要<
?
即下面两行是等价的
但
是语法错误。请给我线索!