apue习题3.5 a.out > outfile 2>&1重定向问题
2017-08-20 17:48
260 查看
测试文件:
测试结果:
参考答案解释:
首先设置标准输出到outfile,然后执行dup将标准输出复制到描述符2(标准错误)上,其结果是将标准输出和标准错误设置为相同的文件,即描述符1和2指向相同的文件表项。而对于命令行
由于首先执行dup,所以描述符2成为终端(假设命令是交互执行的),标准输出重定向到outfile。结果是描述符1指向outfile的文件表项,描述符2指向终端的文件表项。
./hello >outfile 2>&1的过程实际是:
./hello 2>&1 > outfile 的过程是:
#include "apue.h" int main() { char buffer[] = "adasdsxvxzv"; printf("hello,world!"); if (write(STDERR_FILENO, buffer, strlen(buffer)) < 0) printf("error"); exit(0); }
测试结果:
./hello >outfile 2>&1 cat outfile adasdsxvxzvhello,world!
./hello 2>&1 > outfile adasdsxvxzv cat outfile hello,world!
参考答案解释:
a.out > outfile 2>&1
首先设置标准输出到outfile,然后执行dup将标准输出复制到描述符2(标准错误)上,其结果是将标准输出和标准错误设置为相同的文件,即描述符1和2指向相同的文件表项。而对于命令行
a.out 2>&1 >outfile
由于首先执行dup,所以描述符2成为终端(假设命令是交互执行的),标准输出重定向到outfile。结果是描述符1指向outfile的文件表项,描述符2指向终端的文件表项。
./hello >outfile 2>&1的过程实际是:
open(outfile) == 3 dup2(3,1) dup2(1,2)
./hello 2>&1 > outfile 的过程是:
dup2(1,2) open(outfile) == 3 dup2(3,1)
相关文章推荐
- 【转】linux下a.out >outfile 2>&1重定向问题
- linux下a.out > outfile 2>&1重定向问题
- linux中./a.out > outfile 2>&1和./a.out 2> &1 >outfile重定问题的理解
- [杂谈]APUE习题3.5中的2>&1
- shell_2>&1问题(重定向)
- crontab关于 >/dev/null 2>&1输出重定向问题
- LINUX SHELL 中 2>&1 重定向的问题
- [linux]/a.out > outfile 2>&1和./a.out 2> &1 >outfile理解
- LINUX SHELL 中 2>&1 重定向的问题
- LINUX SHELL 中 2>&1 重定向的问题
- Linux Shell脚本编程--(linux空设备文件和重定向)>/dev/null 2>&1
- android基于openfire+spark+amack 即时聊天--------<2>登录遇到的问题和重要类解析
- 重定向 1>&2 2>&1
- Shell重定向&>file、2>&1、1>&2的区别
- shell 1>&2 2>&1 &>filename重定向的含义和区别
- shell 1>&2 2>&1 &>filename重定向的含义和区别
- Linux学习笔记_系统输入输出标准(重定向,>,>>,<,2>&1,xargs)
- Linux下Shell输出重定向到空设备文件1>/dev/null 2>&1
- [zz]bash标准输出、错误输出、重定向标准输出2>&1
- Shell重定向&>file、2>&1、1>&2的区别