是否可以查看由 execute_process 运行的命令的实时输出?

Posted

技术标签:

【中文标题】是否可以查看由 execute_process 运行的命令的实时输出?【英文标题】:Is it possible to see live output of command runned by execute_process? 【发布时间】:2018-07-13 13:47:53 【问题描述】:

我正在运行一些耗时的 bash 脚本:

execute_process(
    COMMAND "bash" "slow_script.sh"
    WORKING_DIRECTORY $INSTALL_SCRIPT_DIR
    ERROR_VARIABLE ERROR_MESSAGE
    RESULT_VARIABLE ERROR_CODE)

我想看到进展。我试图显示 xterm 窗口:

execute_process(
    COMMAND "xterm" "-e" "slow_script.sh"
    WORKING_DIRECTORY $INSTALL_SCRIPT_DIR
    ERROR_VARIABLE ERROR_MESSAGE
    RESULT_VARIABLE ERROR_CODE)

它有效,但看起来很丑。

是否可以在脚本执行时在 CMake 输出中显示脚本输出?

【问题讨论】:

脚本输出到stdout了吗? @lurker,是的,还有 stderr 也许看看tee。您还可以将stderr 重新路由到例如stdoutmy command blah blah ... 2>&1 【参考方案1】:

也许您可以将一些标准的/dev 设备用作OUTPUT_FILE

以下 CMake 示例在我的 Ubuntu 机器上进行了快速测试:

cmake_minimum_required(VERSION 2.4)

project(TestExecuteProcessToStdOut NONE)

execute_process(
    COMMAND "$CMAKE_COMMAND" -E echo "Test"
    ERROR_VARIABLE ERROR_MESSAGE
    RESULT_VARIABLE ERROR_CODE
    OUTPUT_FILE "/proc/self/fd/0"
)

参考文献

Difference between FILE * "/dev/stdout" and stdout Unix & Linux: echo or print /dev/stdin /dev/stdout /dev/stderr

【讨论】:

它有效,谢谢!顺便说一句,由于某种原因,此解决方案在 QtCreator 中无效。 windows 呢?有什么想法吗?

以上是关于是否可以查看由 execute_process 运行的命令的实时输出?的主要内容,如果未能解决你的问题,请参考以下文章

qmake 等效于 cmake execute_process()

如果使用带有 execute_process 命令的 CMake 脚本模式,如何获得彩色控制台输出?

cmake execute_process 中的多个命令

是否可以查看存储的文件由啥序列的 1 和 0 组成?

说说编译器是否会对已知结果的运算式做出优化?(老物)

java编译器与java运行器版本一致性问题