设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
C\C++
›
Linux下C语言中freopen之后,如何将stdin/stdout还原啊 ...
返回列表
查看:
2433
|
回复:
7
Linux下C语言中freopen之后,如何将stdin/stdout还原啊~~~
[复制链接]
xuwaters
xuwaters
当前离线
积分
6
IP卡
狗仔卡
发表于 2004-12-3 21:49:08
|
显示全部楼层
|
阅读模式
我想写一个程序,输入源代码(文件名为a.cpp),这个程序的任务就是
编译代码,生成一个可执行程序,名字比如叫a,a需要的输入文件为a.in
然后这个程序将a.in当stdin输入到程序a,生成一个结果文件,比如叫
a.out.
这个程序该如何写? 用shell也行,c也行。
偶主要的问题是不知道如何重定向stdin,偶用freopen之后,发现自己的
控制台的stdin也被改了,这是怎么回事啊?该如何解决这个问题?
希望各位Linux的高手,大侠们,帮帮小弟呀~~~~
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
xuwaters
xuwaters
当前离线
积分
6
IP卡
狗仔卡
楼主
|
发表于 2004-12-3 21:52:04
|
显示全部楼层
还有一个问题。。。。。
能不能再运行那个a程序的时候,顺便把它占用的资源也测出来
比如说时间,内存什么的??
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2004-12-3 22:52:33
|
显示全部楼层
在重定向之前,先把标准输入输出保存起来。重定向后,再恢复。
回复
支持
反对
使用道具
举报
显身卡
xuwaters
xuwaters
当前离线
积分
6
IP卡
狗仔卡
楼主
|
发表于 2004-12-3 23:16:21
|
显示全部楼层
能不能具体讲解一下,code也行啊
回复
支持
反对
使用道具
举报
显身卡
crquan
crquan
当前离线
积分
284
IP卡
狗仔卡
发表于 2004-12-4 03:07:25
|
显示全部楼层
[color=blue]
FILE *fp = stdin; // save stdin
stdin = fopen(filename, "r");
...
fclose(stdin);
stdin = fp; // restore it!
scanf(...); // using the restored stdin!
[/color]
复制代码
stdin 只不过是个已赋值的指针而已。
回复
支持
反对
使用道具
举报
显身卡
xuwaters
xuwaters
当前离线
积分
6
IP卡
狗仔卡
楼主
|
发表于 2004-12-4 09:06:54
|
显示全部楼层
可是这样不行,当用了 fclose(stdin) 或者 fclose(stdout) 之后
后面的所有的 printf 都不知道把东西 print 到什么地方去了,不
在文件里面,也不在 console 里面
如果不用freopen, 有没有什么办法将一个进程的io重定向。
比如做自己的IDE的时候,将gcc编译时候的出错的信息,重定向到
一个文件。应该怎么写呀~~
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2004-12-4 10:16:50
|
显示全部楼层
保存重定向要用文件描述符。文件指针应该是指向流的。
搜索论坛吧,这个问题以前回答过。
回复
支持
反对
使用道具
举报
显身卡
xuwaters
xuwaters
当前离线
积分
6
IP卡
狗仔卡
楼主
|
发表于 2004-12-4 10:56:58
|
显示全部楼层
3x~
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Mandriva Linux
红旗 REDFLAG Linux
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表