-
19 votesanswersviews
将stdout从subprocess.Popen保存到文件,再将更多内容写入文件
我正在编写一个python脚本,它使用subprocess.Popen来执行两个程序(来自编译的C代码),每个程序都生成stdout . 该脚本获取该输出并将其保存到文件中 . 因为输出有时足以压倒subprocess.PIPE,导致脚本挂起,所以我将stdout直接发送到日志文件 . 我想让我的脚本写一些文件的开头和结尾,以及两个subprocess.Popen调用之间 . 但是,当我查看我的日... -
165 votesanswersviews
如何在执行期间将PowerShell的输出重定向到文件
我有一个PowerShell脚本,我想将输出重定向到一个文件 . 问题是我无法改变调用此脚本的方式 . 所以我做不到: .\MyScript.ps1 > output.txt 如何在执行期间重定向PowerShell脚本的输出? -
229 votesanswersviews
Logger 配置以记录到文件并打印到stdout
我正在使用Python的日志记录模块将一些调试字符串记录到一个非常好的文件中 . 现在另外,我想使用这个模块也将字符串打印到stdout . 我该怎么做呢?为了将我的字符串记录到文件,我使用以下代码: import logging import logging.handlers logger = logging.getLogger("") logger.setLevel(log... -
110 votesanswersviews
如何记录start-stop-daemon启动的进程的stdout?
我使用init脚本来运行一个简单的进程,该进程以: start-stop-daemon --start --quiet --chuid $DAEMONUSER \ --make-pidfile --pidfile $PIDFILE --background \ --exec $DAEMON $DAEMON_ARGS 名为$ DAEMON的进程通常将日志信息打印到... -
26 votesanswersviews
为什么stdout在重定向到文件时需要显式刷新?
printf() 的行为似乎取决于 stdout 的位置 . 如果 stdout 被发送到控制台,则 printf() 是行缓冲的,并在打印换行符后刷新 . 如果将 stdout 重定向到文件,则不会刷新缓冲区,除非调用 fflush() . 此外,如果在将 stdout 重定向到文件之前使用 printf() ,则后续写入(对文件)将进行行缓冲并在换行后刷新 . 什么时候 st... -
12 votesanswersviews
我可以将STDOUT和STDERR发送到日志文件,也可以发送到Win32 Perl中的屏幕吗?
我搜索过互联网并找到了一些很好的解决方案,可以将STDOUT发送到2个不同的地方 . 喜欢日志文件,同时也喜欢屏幕 . 这是一个例子: use IO::Tee; my $log_filename = "log.txt"; my $log_filehandle; open( $log_filehandle, '>>', $log_filename ) or die... -
4 votesanswersviews
从perl中的external * nix命令获取STDOUT,STDERR和响应代码
我想从我的Perl脚本中执行外部命令,将stdout和stderr的输出放入我选择的 $variable 中,并将命令的退出代码放入 $? 变量中 . 我在perlfaq8和他们的论坛中找到了解决方案,但他们并没有为我工作 . 奇怪的是,只要退出代码是正确的,我在任何情况下都不会获得sdterr的输出 . 我在Red Hat Linux 5上使用Perl版本5.8.8 . 这是我正在尝试的一个例子... -
0 votesanswersviews
有没有办法将STDERR和STDOUT传递给不同的程序?
例如,我需要设置两个tee命令,使得一个将从STDOUT读取,第二个从STDERR读取,并且将控制台输出重定向到不同的文件 . 在Windows批处理文件中是否可以这样做?我知道如何将输出重定向到文件,但在这种情况下,它不会显示在屏幕上或如何组合两个流,但如何独立管道? -
4 votesanswersviews
从perl中的external * nix命令获取STDOUT,STDERR和响应代码
我想从我的Perl脚本中执行外部命令,将stdout和stderr的输出放入我选择的 $variable 中,并将命令的退出代码放入 $? 变量中 . 我在perlfaq8和他们的论坛中找到了解决方案,但他们并没有为我工作 . 奇怪的是,只要退出代码是正确的,我在任何情况下都不会获得sdterr的输出 . 我在Red Hat Linux 5上使用Perl版本5.8.8 . 这是我正在尝试的一个例子... -
0 votesanswersviews
使用assoc-command在Windows批处理中重新定向stdout和stderr
由于 assoc 无法正确管理 %ERRORLEVEL% ,因此我使用以下方法作为解决方法: assoc .myext=myext >NUL 2>NUL ftype myext="%~dp0mybatch.bat" "%%1" >NUL 2>NUL assoc .myext | find "myext" >N... -
2 votesanswersviews
Bash - 将stdout重定向到日志和屏幕,只有stderr才能记录
我想做以下事情; 将stdout的副本重定向到logfile并在屏幕上保留stdout . 将stderr重定向到相同的日志文件,而不是在屏幕上显示 . 没有stdout到屏幕的代码: #!/bin/bash exec 1> >(sed -u 's/^/INF: /' >> common.log) exec 2> >(sed -u 's/^/ERR:... -
0 votesanswersviews
如何在while循环中重定向stderr和stdout
我有一个循环设置来搜索数据文件,并使用数据文件的每一行作为参数执行命令 . PUBLISH参数可以有空格,这就是为什么我有不同的转义 . 我希望能够将循环的每次迭代输出stderr和stdout到另一个日志文件: while read VARIABLE1 PUBLISH LOGFILENAME do /home/script_name -switch $VARIABLE1 -switch2 \... -
2 votesanswersviews
Python subprocess&stdout - 程序死锁
我有一个模拟程序,它通过stdin引导并向stdout提供输出 在QProcess中运行 C++/Qt 程序效果很好 . 在 linux 下运行 Python 程序运行良好,使用: p = subprocess.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE) 并使用 p.stdin.write , p.stdout.readline... -
15 votesanswersviews
从stdin读取标准输出?
当连接到终端时,stdout是行缓冲的,但我记得在某处读取(至少从stdin)将自动刷新stdout . 我使用的所有C实现都已经完成了,但我现在无法在标准中找到它 . 它确实有意义,它是这样的,否则代码如下: printf("Type some input: "); fgets(line, sizeof line, stdin); 需要一个额外的 fflush(stdout... -
6 votesanswersviews
如果我不在subprocess.Popen()中使用stdout = subprocess.PIPE,有什么区别?
我最近在Python中注意到 subprocess.Popen() 有一个参数: stdout=None(default) 我也看到人们使用stdout = subprocess.PIPE . 有什么不同?我应该使用哪一个? 另一个问题是,为什么wait()函数不能等到有时完成进程?我用了: a = sp.Popen(....,shell=True) a.wait() a2 = sp.Popen... -
0 votesanswersviews
为什么stdin和stdout被认为是C中的文件?
例如, stdio.h 库有一些需要 FILE * 参数的函数,但接受来自终端的用户输入的 stdin . -
0 votesanswersviews
使用Python popen合并stdout和stderr并检测stderr是否为空
我想用popen运行一个子进程,它可以向stdout和stderr发送消息,但是这个子进程将继续沿着它的快乐方式,尽管写入stderr . 我想将stdout和stderr一起流,所以我按照它发生的确切顺序得到输出(或者我在技术上刷新了) . 然后,我想记录完整的结果集 . 但我也想独立知道stderr是否为空 . 如果不是,我将抛出异常 . 我很清楚如何将它们分开或合并在一起,但我怎么可能同时做... -
4 votesanswersviews
将两个进程的stdout重定向到Linux C中的另一个进程的stdin
我遇到了关于多进程重定向stdout的问题 . 假设我有进程A,我在A中使用fork(),然后我得到进程A和B.然后我在B中使用fork(),最后我得到进程A,B和C.B和C都在实现其他程序EXEC() . 现在,我尝试用两个管道将A和B的stdout重定向到C的stdin . #include<unistd.h> #include<stdio.h> #include<... -
1 votesanswersviews
从stdin读取时,Node.js无法读取python subprocess标准输出
我有一个node.js脚本,它启动一个python子进程并读取它的stdout . 只要python进程不尝试从stdin读取,这就可以工作 . 然后父进程没有从子进程获得任何内容 . 我在这里有node.js脚本和两个python测试用例:(如果你注释试图从stdin读取的行,这两个例子都有效) 第一个孩子: import sys print('before') for line in sy... -
56 votesanswersviews
你如何在Perl中同时捕获stderr,stdout和退出代码?
是否可以从Perl运行外部进程,捕获其stderr,stdout和进程退出代码? 我似乎能够做这些的组合,例如使用反引号获取stdout,使用IPC :: Open3捕获输出,使用system()获取退出代码 . 你如何一次捕获stderr,stdout和退出代码? -
7 votesanswersviews
换行子进程'stdout / stderr
我想捕获并显示我通过Python的子进程调用的进程的输出 . 我以为我可以将我的文件类对象作为命名参数stdout和stderr传递 我可以看到它访问 fileno 属性 - 所以它正在对该对象做一些事情 . 但是,永远不会调用 write() 方法 . 我的方法是完全关闭还是我错过了什么? class Process(object): class StreamWrapper(object... -
3 votesanswersviews
来自子进程标准输出的可靠非阻塞读取
注意:我有一个进程将一行写入stdout(“print(”hello“))并等待raw_input . 我使用p = subprocess.Popen运行此进程,然后调用p.stdout.readline()....这无限期地阻塞 . 我设置shell = False ...为什么我不能读取第一个输出? p = subprocess.Popen(cmd, shell=False, stdout=s... -
4 votesanswersviews
Haskell编译的IO动作命令和刷新[重复]
这个问题在这里已有答案: IO happens out of order when using getLine and putStr 3个答案 我在编译的Haskell代码中遇到了IO的奇怪行为 . 这是发生了什么: -- MyScript.hs main = do putStr "Enter your name: " a <- getLine ... -
0 votesanswersviews
如何使python curses应用程序管道友好?
我正在编写一个python应用程序,旨在以交互方式在unix管道中使用 . 应用程序应启动基于curses的终端UI,并根据用户交互,仅在退出之前写入标准输出 . 典型用法是典型的管道: foo_command | my_application | sink_app 我遇到的问题是python curses库在应用程序运行时将各种各样的东西发送到stdout . 此外, sink_app 在 m... -
1 votesanswersviews
如何管理交互式shell的输入和输出?
我正在尝试构建一个应用程序,使用户能够与命令行交互式shell进行交互,如IRB或Python . 这意味着我需要将用户输入传递到shell中,并将shell的输出传递回用户 . 我希望这将像管道STDIN,STDOUT和STDERR一样简单,但是大多数shell似乎对STDIN输入的响应不同,而不是直接键盘输入 . 例如,以下是将STDIN传递给 python 时发生的情况: $ python ... -
0 votesanswersviews
Python子流程交互:监控(stdout)通信(stdin)2.7.5
基本上我正在尝试使用子进程库(Popen)自动化一些Linux安装程序(和其他任务) . 在过去,我已经能够打开这样的流程: self.process = subprocess.Popen( self.executable, stdout=subprocess.PIPE, ... -
2 votesanswersviews
使用python的子进程模块打开python进程
我正在尝试用python脚本中的不同python解释器进行通信 . 我写了一个对象,它应该存储子进程并读/写它的stdin,stdout,stderr . import subprocess import fcntl import os class Python: def __init__(self): self.process = subprocess.Popen(&... -
8 votesanswersviews
我可以单独捕获stdout / stderr并保持原始顺序吗?
我使用原生win32 API编写了一个Windows应用程序 . 我的应用程序将启动其他进程并捕获输出并以红色突出显示stderr输出 . 为了实现这一点,我为stdout和stderr创建了一个单独的管道,并在调用CreateProcess时在STARTUPINFO结构中使用它们 . 然后,我为每个stdout / stderr句柄启动一个单独的线程,该句柄从管道读取并将输出记录到窗口 . 这在... -
0 votesanswersviews
在子进程存活时读取子进程的输出
我用它创建了两个管道 saAttr.bInheritHandle = TRUE; ... CreatePipe(&childStdOut_Rd, &childStdOut_Wr, &saAttr, 0); CreatePipe(&childStdErr_Rd, &childStdErr_Wr, &saAttr, 0); 然后我用下一个STARTU... -
-1 votesanswersviews
仅重定向子进程stdin并从stdout和stderr中删除数据
我可以在 STARTUPINFO 结构中使用 STARTF_USESTDHANDLES 标志重定向 stdin , stdout , stderr 进程,由 CreateProcess 创建 . Documentation对于这种情况说( STARTF_USESTDHANDLES 标志存在): hStdInput,hStdOutput和hStdError成员包含其他信息 . 如果在调用其中一个进...