0

我可能遗漏了一些小东西,但是否有可能以符合 POSIX(破折号)的方式实现此语法:

$ ./myApp 2> stderr.txt 1> stdout.txt

我知道你不能使用>&但必须使用2>&1但我不想这样做。我有大量数据进入标准输出,我不想解析它来获取我的标准错误。我觉得我错过了一些非常简单的东西,但我不能指望它......

现在,当我运行上述命令时,我只得到了几行 stdout (3),但它显​​示在 stderr 文件中并且 stdout 为空。我也尝试了各种分组方式,但我仍然没有运气。不知道发生了什么...

更新

这是我正在运行的实际命令的格式,以便您可以看到我正在尝试完成的全部效果:

$ LD_PRELOAD=/usr/lib/libtcmalloc.so /usr/bin/time -p myApp -c -f inputFile 2> stderr 1> stdout

这就是我提到我用 () 尝试了多种分组变体的地方。此外,可执行文件myApp不会分叉。

我认为这个命令会起作用,但我发现不是这样:

$ LD_PRELOAD=/usr/lib/libtcmalloc.so /usr/bin/time -p (myApp -c -f inputFile) 2> stderr 1> stdout
4

1 回答 1

0

自从我在评论中回答后发布:

您发布的语法是正确的语法,但您可能会受到time命令输出的一些干扰。尝试

time -p sh -c 'LD_PRELOAD=/usr/lib/libtcmalloc.so command >stdout.txt 2>stderr.txt'
于 2011-09-27T20:02:08.313 回答