您的位置:首页 > 运维架构

freopen重定向stdout之后如何恢复标准句柄stdout

2011-08-02 18:40 363 查看

freopen重定向stdout之后如何恢复标准句柄stdout

分类:
C++ 2011-05-09 19:50
60人阅读 评论(0)
收藏 举报

函数定义如下:
FILE * freopen ( const char * filename, const char * mode, FILE * stream );

在windows下控制台的标准输出设备是CON,在linux下面则用/dev/tty来显示当前终端,标准的应该是/dev/console,但个人试验只有tty的情况下
才能成功。设置了set-user-id并将user改成root后依然无法使用console完成输出,具体原因有待考证。
在windows环境下:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *agrv[])
{
freopen(agrv[1],"w",stdout);
printf("what is going on?/n");
printf("good/n");
freopen("CON","w",stdout);
printf("succeed!/n");
fclose(stdout);
exit(0);
}

在linux环境下:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *agrv[])
{
freopen(agrv[1],"w",stdout);
printf("what is going on?/n");
printf("good/n");
freopen("/dev/tty","w",stdout);
printf("succeed!/n");
fclose(stdout);
exit(0);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: