有没有办法在strace中运行时捕获子命令的退出代码?

问题描述 投票:2回答:1

我正在尝试使用strace跟踪运行单元测试所涉及的文件。有没有办法在我这样做的时候捕获测试运行的exitcode?

@cmd="php -d auto_prepend_file=auto_prepend_for_tests.php /data/tests/sdk/bin/phpunit.phar --configuration /data/tests/conf/database.xml
 my_test.php"
open(IN, "-|", "strace -ff $pid -e trace=file @cmd 2>&1")
perl phpunit strace
1个回答
1
投票

Strace将使用与跟踪程序相同的退出代码退出。到现在为止还挺好。

开放看起来有点意外,我们正在谈论的是perl吗?然后来自perldoc -f open的这个位适用:

关闭任何管道文件句柄会导致父进程等待子进程完成,然后返回$?中的状态值。和“$ {^ CHILD_ERROR_NATIVE}”。

所以,是的,您可以通过调用close IN并查看$中的值来获取代码。

© www.soinside.com 2019 - 2024. All rights reserved.