【发布时间】:2013-11-16 18:36:21
【问题描述】:
我有一个分叉子进程的 perl 脚本。
sub my_exec{
my($args,$stdout, $stderr) = @_;
my $processes = fork();
die("Cant fork") unless defined($processes);
if(processes == 0){
if(defined $stdout){
close(STDOUT);
open STDOUT, $stdout;
}
if(defined $stderr){
close(STDERR);
open STDERR, $stderr;
}
exec @$args;
}else{
...
}
}
我的主要问题是我想为 stderr 的每一行输出添加一个时间戳。我想知道是否可以在这里完成。如您所见,stderr 并不总是改变。我假设我可以通过某种管道来做到这一点?我还想重定向父脚本(同时将 stdout 和 stderr 重定向到文件的守护程序)以使用时间戳。
谢谢
【问题讨论】:
-
open STDOUT,$stdout打开一个输入文件句柄——不是你想要的。 -
好吧,$stdout 里面会有类似 ">out.log" 的东西
-
IPC::Run 可能是你想要的
-
谢谢。我肯定在看 IPC::Run。但这可以用我目前运行东西的方式(fork 和 exec)来完成吗?
-
@Smartelf 是的,你可以用低级的方式来做。见我的answer below。