首页 > 代码库 > C语言之流的重定向

C语言之流的重定向

写c的小程序断不了需要输入输出,手动输入可太麻烦了。下面介绍IO的重定向方式:

1.重定向标准输入输出和错误,直接在命令行使用符号< > 2> >> 2>>等,还可使用2>&1将标准错误重定向到标准输出(两个大于号表示追加)
如下面执行main程序:
main < data.txt >answer.csv 2> error.log

2.在程序代码中使用freopen(文件路径,打开模式,stdin/stdout/stderr)进行重定向,配合使用main函数的参数来传递文件名(路径)。

3.使用dup2(fileno1,fileno2)
每用fopen()打开一个文件,操作系统都会在描述符表中新注册一项,产生一个文件描述符(类型为FILE*)fp,fileno(fp)函数返回描述符的编号(0~255)。
一般情况下0,1,2是固定的分配给标准输入、输出、错误,之后的号码按使用时顺序分配,如数据库连接,网络连接的流。
dup2(4,3)表示将4号数据流复制(覆盖)到3号
形如dup2(fd[1],1)将标准输出设为管道的写入端
dup2(fileno(fp),1),重定向标准输出到文件(这里的文件可以指普通文件,也可以理解为LINUX中的一切设备皆文件的概念)
在linux上还可以打开/dev/tty,将数据直接发送到终端

你还可以写个脚本来执行你的程序,免去了不断的输入来进行测试。