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

来源:互联网 发布:nginx 跳转到指定域名 编辑:程序博客网 时间:2024/05/16 12:29
 

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

分类: C++ 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);}