可以通过子进程的标准输入、标准输出、标准错误输出以完全非阻塞的形式传递数据。
此出口称为标准错误设备(通常简称为stderr)。
该函数只有一个参数,即您用来写入错误信息的文件的文件句柄(通常会将该信息发送到STDERR)。
如果您将stdout和stderr重定向到自己选择的文件,您将看到老版本中出现的行为。
术语stdout表示执行的程序所返回的输出数据,而stderr指的是程序遇到或返回的错误。
除非被重定向到其他地方,否则来自后台进程的stdout和stderr流将被定向控制终端。
nohup命令用于启动一个忽略hangup信号的命令,并且将stdout和stderr附加到文件。
以这种方法合并STDOUT和STDERR,将阻止STDERR输出在系统控制台上显示并允许程序解析它。
这些命令的stderr未进行重定向,因此所有三个实用工具都会将错误消息打印到终端上。
这样在大部分时间里,为了安全保管,您将会把STDOUT定向到一个文件,并监视针对进程和结果概要的STDERR。
短语|&teelog将bash的stdout和stderrto通过管道重定向到tee实用工具,后者将其stdin打印到stdout和文件log中。
值得注意的是,code_recognizer.py将它的(大的)测试结果文件发送到STDOUT,而将一些友好的消息放在STDERR里。
首先,在第一阶段,初始进程从标准输入stdin读取数据,把输出写到stdout,把错误发送到stderr。
默认情况下,除非另行指定,您的终端既是stdin的数据源,也是stdout和stderr的输出目标。
relocations将预先编译代码的重定位信息打印到STDERR。
我们所使用的一个技巧是设置sys.stderr=sys.stdout。
同步输出函数,此函数将阻塞进程并将字符串打印到标准错误输出。
如果命令或脚本出现错误,您将看不到标准的错误(stderr),除非您通过竖线将它添加到stdout。
iprint=awt将所有JVM内部AWT跟踪点记录到stderr,在进入和退出时进行缩进。
不过,您可更改stdin的源以及stdout和stderr的目标。
t选项可以在执行每个命令之前将命令回显到stderr。
在前面关于管道的讨论中可以看到,必须先将stderr重定向到stdout,然后再重定向到tee,如果您需要同时保存两者的话。
同时,selpg进程在后台运行,并且标准输出和标准错误都被重定向至文件。
有时候,可能需要把stdout和stderr写到同一个文件或设备。