linux系统进程打印重定向实现
程序员文章站
2022-03-25 09:09:18
...
实现打印重定向到当前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);
}
自此,代码中每次运行到打印函数时都会进入该流程,进入打印重定向流程。
上一篇: java.net评选2008年最重要的Java新闻
下一篇: Java ME 面临灭绝?