linux标注输出stdout重定向

ABCA的A 发布于 2013/01/14 15:06
阅读 1K+
收藏 0

在开发板上写了一个直接操作framebuffer的代码;

现在要求所有进程调用printf时,都不在屏幕显示。只能通过我的直接操作framebuffer的代码进行打印操作,

像linux下curse库效果一样,这样怎么实现呢?

请各位提供下思想。谢谢,不胜感激。

加载中
0
ChenQi
ChenQi

你可以将整个应用的标准输出和错误输出重定向到log文件。然后自己直接写标准输出的设备。

简单原理如下:

#!/bin/sh                                                                                                                                                                                                       

echo "message through stdio"
echo "my own message" > $(tty)
echo "message2 through stdio"

chenqi@pek-qchen1-d1:~/mypro/bash$ ./test.sh
message through stdio
my own message
message2 through stdio
chenqi@pek-qchen1-d1:~/mypro/bash$ ./test.sh > log
my own message

ABCA的A
ABCA的A
不过仔细想来,这个不能解决其他进程向终端打印的问题。。。 按照这个方法,可以程序开始close(0),close(1)。 就这样吧,或许就是这个需求太变态了,实现不了。
ABCA的A
ABCA的A
好主意。。谢谢。
0
ABCA的A
ABCA的A
顶一个先。。。
0
心有未来
心有未来
表示没听说有标准输出重定向一说。
ABCA的A
ABCA的A
这只是我一个想法,当像标准输出打印数据时,不让数据出现屏幕上。想到了将标准输出,重定向到其他地方。。。见笑了,有其他方法吗?
0
象牙山赵国强先生
象牙山赵国强先生
没明白一说的啥意思啊。 framebuffer是啥我不知道。你是要把所有信息都定向到一个文件里么?比如你执行一个脚本 ./xx.sh > /xx.log 2>&1 是这意思么?
ABCA的A
ABCA的A
不是啊,你这是输出重定向。。。就是我绕过了系统的层一些函数,直接控制显示设备。而此时,不想让printf之类的函数的数据也出现的屏幕上。让用户层调用printf时,屏幕不再显示数据,,,
0
心有未来
心有未来

引用来自“心有未来”的答案

表示没听说有标准输出重定向一说。
真心不知道你为何要截获printf,有何用。
ABCA的A
ABCA的A
额,,这倒是一个变态的应用。
0
f
fusion.zhw

1-c内部解决方案:

fp=fopen('/dev/null','w')或fp=fopen('/dev/null','w')

使用fprintf(fp,"");替代printf 

2-shell 的进程级别解决方案Lynch 的方法一样):

重定向stdout,stderr

返回顶部
顶部