函数定义如下:
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);
}
freopen重定向stdout之后如何恢复标准句柄stdout
最新推荐文章于 2024-07-10 17:08:52 发布