【问题标题】:See output of a background process查看后台进程的输出
【发布时间】:2013-10-03 11:36:35
【问题描述】:

我正在 Debian 上测试用 C 语言编写的路由算法。在算法源文件中,我将标志设置为 1 以启用在标准输出上打印路由决策。问题是:运行此文件的进程是后台进程。我怎样才能看到标准输出?

【问题讨论】:

    标签: c linux process background stdout


    【解决方案1】:

    您可以使用以下行来检查您的流程正在做什么。

    $ strace -p $!
    

    $! 给出最后一个后台进程的进程 ID。请记住在与后台进程相同的控制台中运行上述行。

    【讨论】:

    • 如果原始控制台断开连接,我必须从另一个控制台登录怎么办?
    【解决方案2】:

    假设您已经启动并运行了您想要收听的进程,并且您不想像 Laszlo 建议的那样通过重定向停止并重新运行它:您可以使用 strace 来收听它 - How should strace be used?

    基本上它可以跟踪所有系统调用活动,但包括打印

    添加-p <pid> 以将其附加到所需的进程。添加-e write 过滤大部分内容并仅获取输出写入

    例如:

    > grep somestring . -R >& /dev/null &
      [2] 8093
    > strace -p 8093 -e write
    ...here goes the output...
    

    【讨论】:

      【解决方案3】:

      您将程序的输出重定向到一个文件中,然后您可以在该文件中查看输出。

      【讨论】:

        猜你喜欢
        • 2012-08-19
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        • 2021-05-06
        • 1970-01-01
        • 1970-01-01
        • 2015-10-03
        • 2018-03-14
        相关资源
        最近更新 更多