linux下输入流输出流错误流的重定向

来源:互联网 发布:mingw apache 编辑:程序博客网 时间:2024/06/07 16:15

流的重定向还是先看代码

#include <stdio.h>
int main()
{
printf("input the int value i : \n");
int i,j;
scanf("%d",&i);
printf("input the int value j : \n");
scanf("%d",&j);
printf("i+j=%d\n",i+j);
return 0;
}
生成可执行文件然后./a,out
如下

这很简单

然后我们需要明确一点 标准的输入流是0 标准的输出流是1 不屑默认输出流

接下来我们这样执行
我们输入一个1 代表输出流。当然这个1可以不写默认输出流。奇怪是我们为什么没有显示 input the int value i :
因为我们把标准的输出流重定向到a.txt文件了。
注意当我们 再次执行的时候会发现a.txt的内容只会增加 不会把原来的数据给清掉如图。


这是因为我们执行命令的时候是使用的双箭头
当我们使用的是单箭头的时候他就会把原来的数据给清空掉。
只保留一份数据


已上是默认的输出流


下面在看输出流
创建一个文件input.txt
这个时候再执行命令./a.out < input.txt

生成此时标准的输入就从键盘变成 input.txt了。这就是输入流的重定向、。

接下来会标准的错误流

#include <stdio.h>


int main()
{
printf("input the int value i : \n");
int i,j;
scanf("%d",&i);
printf("input the int value j : \n");
scanf("%d",&j);
if(0!=j){
printf("%d/%d=%d\n",i,j,i/j);
}else{
fprintf(stderr,"j != 0\n");
return 1;
}

return 0;
}


第一个框框是标准的错误流,echo $? 输出1代表程序出错了。因为为0代表程序正常执行。,
第三个框框则实现了标准输出流和标准错误流的分别的重定向。

阅读全文
0 0
原创粉丝点击