linux系统进程打印重定向实现

    实现打印重定向到当前CRT控制台能有效提高调试debug效率,记录下最近工作中实现的打印重定向功能。基于之前的程序状态监测系统实现,分客户端和服务端;
    客户端接收用户命令,确认是否需要重定向,代码如下:

    char *tty_name = NULL;
    if(is_str_equal(cmd_line, "tty"))
    {
        /* 获取当前tty名称 */
        tty_name = ttyname(STDOUT_FILENO);
        sprintf(argv[1], "tty:%s",tty_name);
    }

    上文提到的程序状态监测系统会将argv[1]传到服务端,服务端在接收到命令需要重定向时将glogRedirect标志位置1,然后在打印函数中添加如下代码:

        if(glogRedirect)
        {
            /* 重定向console到当前tty */
            tty = open(gttyname, O_RDONLY | O_WRONLY);
            if(tty >= 0)
            {
                ioctl(tty, TIOCCONS);
                close(tty);
            }

            vprintf(pFmt, args);
            
            /* 恢复console */
            if(tty >= 0)
            {
                tty = open("/dev/console", O_RDONLY | O_WRONLY);
                if(tty >= 0)
                {
                    ioctl(tty, TIOCCONS);
                    close(tty);
                }
            }
        }
        else
        {
            vprintf(pFmt, args);
        }

    自此,代码中每次运行到打印函数时都会进入该流程,进入打印重定向流程。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值