重定向笔记

首先注意文件描述符、三个数字0,1,2和文件指针的关系。
运行任何程序之前,都会首先打开三个文件:一个用于输入,一个用于输出,一个用于错误输出,这三个文件打开后形成的文件结构分别用文件指针stdin,stdout,stderr进行指向。这样会形成三个文件描述符0,1,2。具体哪个是0,哪个是1,哪个是2,那要根据打开顺序。一般是按照“标准输入-标准输出-标准错误”这个顺序来打开的,所以我们常说标准输入就是文件描述符0,输出是1,错误是2,为了增强可移植性,linux的unistd.h中对这三个描述符进行了宏定义,所以有STDIN_FILENO - 0, STDOUT_FILENO - 1, STDERR_FILENO - 2。

stdio.h中有指针定义:

141 /* Standard streams. */
142 extern struct _IO_FILE *stdin; /* Standard input stream. */
143 extern struct _IO_FILE *stdout; /* Standard output stream. */
144 extern struct _IO_FILE *stderr; /* Standard error output stream. */
145 #ifdef __STDC__
146 /* C89/C99 say they're macros. Make them happy. */
147 #define stdin stdin
148 #define stdout stdout
149 #define stderr stderr
150 #endif

unistd.h中有如下宏定义:

180 /* Standard file descriptors. */
181 #define STDIN_FILENO 0 /* Standard input. */
182 #define STDOUT_FILENO 1 /* Standard output. */
183 #define STDERR_FILENO 2 /* Standard error output. */



重定向最常用的两个:“>”,“<”,分别为输出重定向和输入重定向。
进阶一步:追加的输出重定向:“>>”。
思考上述重定向工作:输出重定向就是以只写方式打开文件,将标准输出stdout(文件描述符1)写入该文件,注意,标准错误信息stderror(2)不会写入该文件。
输入重定向则是只读方式打开并读取文件到标准输入stdin(0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值