记录
标准输入流输出流以及错误流的重定向
stdio.h
可分为 stdin(标准输入流),stdout(标准输出流),stderr(标准错误流)
stdout 输出流重定向
将输出流重定向输出到a.txt,其中1代表标准输出流,0则是标准输入流,默认为标准输出流
ls 命令作为linux的小工具同样可以重定向输出,上图将查看到的etc目录下的文件名重定向保存到etc.txt
采用单>重定向时会将上一次的输出覆盖,采用>>重定向则会生成在上一次输出下方,并不会覆盖上一次输出
stdin 输入流重定向
创建input.txt,写入6和8两行,使用<重定向输入将input.txt中内容输入给a.out
stderr 标准错误流
标准错误流必须return返回一个非0的数
综合使用,将输出流重定向到t.txt,将错误流重定向到f.txt,将input.txt的内容作为输入流重定向到a.out
总结
1.终端内查看程序的是否运行成功:echo $?
如果输入0,表示成功,否则失败。
2.
【echo $?】:输出main()执行完毕后的返回值
重定向:
命令 1>>文件名:重定向标准输出流(默认1可不写),>> 为追加模式, > 为覆盖模式,文件不存在则创建。
命令 2>>文件名:重定向标准错误流,....。
命令 <文件名:重定向标准输入流,文件不存在则报错。
./ a.out 1(可以不写)>> a.txt
每运行一次,就会在txt文件里产生结果,默认是屏幕(重定向)
>单箭头代表每次覆盖,双箭头代表每次追加
< input.txt代表输入的重定向,从txt中取值(txt中,将参数分别写入文档,写一个换一行)
标准错误流输出到f.txt当中了
重定向机制:把输出流定向输出到某个位置,例如文件中,./a.out 1>>a.txt则输出不再显示在屏幕上,而是显示在a.txt中,但输入仍然在键盘,且输入显示在屏幕上;2代表错误流,1代表输出流,0代表输入流,不写默认为1;读取a.txt命令为cat a.txt;>为覆盖更新整个文件的重定向命令(如最新数据),>>为顺序写入文件的重定向命令,不会覆盖原本的内容(如日志文件);把某个文件作为输入流,例子命令为./a.out < input.txt 1 >t.txt 2>f.txt
默认情况下,标准输入流为键盘输入,标准输出流为终端输出,标准错误流为错误输出,重定向机制可以改变默认情况,将流输入或输出到特定文件或位置;
这是用来防bai护一个通常错误的小技du巧:
if (x = 0)
如果养成了zhi把常量放在 == 前面的习惯, 当意外的dao把代码写成了:
if (0 = x)
那编译器就会报怨。明显的, 一些人会觉得记住反换测试比记住输入双 = 号容易。当然这个技巧只对和常量比较的情况有用。
标准输入输出错误流
老师你判断错了
./a.out < input.txt
重定向机制
输入重定向
1、把要输入的内容写入一个文件 vi input.txt
2、./a.out < input.txt
用文件取代默认的键盘输入
1、不写1也可以
2、>>表示追加,>覆盖,只会显示最新的输出
看日志文件:想看用户之前的操作,所以是追加重定向
看最新数据,所以用覆盖重定向
标准输入流是0,标准输出流是1
./a.out 1>>a.txt,标准输出流默认是输出到终端,重新定向后不再这样而是输出到我们指定的a.txt文件
输出重定向
标准输入流,标准输出流,标准错误流
标准流,重定向
标准输入流 ---> 键盘输入
标准输出流 --> 终端输出
标准错误流 --> 错误输出
重定向机制
>>重定向到该文件,无覆盖
>重定向到该文件,最新
<重定向输入文件
1>正确结果导入 2>错误结果导入
输出重定向:> 和 >> >表示覆盖,>>表示追加
输入重定向:<
./a.out >> a.txt
>> 追加内容
> 单箭头 不覆盖,保持最新
./aout < input.txt 输入流
输出流、错误流、输入流
./a.out 1>t.txt 2>f.txt <input.txt
linux >> 重定向 输出流
./a.out >> a.txt
>> 追加内容
> 单箭头 不覆盖,保持最新
./aout < input.txt 输入流
输出流、错误流、输入流
./a.out 1>t.txt 2>f.txt <input.txt
./a.out执行a.out
./a,out 1>>a.txt输出流重定向,a.out输出内容到a.txt,在a.txt原有的内容上增加,1可有可无
./a,out >a.txt输出流重定向,a.out输出内容到a.txt,覆盖a.txt原有内容
cat a.txt 打开a.txt文件并输出
ls /etc >>etc.txt把etc的内容添加到etc.txt中
./a,out <a.txt输入流重定向,a.txt输入内容到a.out
rm *.txt删除所有的txt文件
./a.out 1>t.txt 2>f.txt <input.txt标准输出流,标准错误流,标准输入流
输出重定向:> 和 >> >表示覆盖,>>表示追加
输入重定向:<
例:./a.out>>a.txt //不会输出到显示屏而保存在文件中
重定向机制
>>重定向到该文件,无覆盖
>重定向到该文件,最新
<重定向输入文件
1>正确结果导入 2>错误结果导入
标准输入输出错误流的重定向:
重定向符号:
>> : 第二次重定向时,上一次的结果保留,第二次的内容追加到上一次的后面。
> :会覆盖之前重定向的内容,目标文件中仅保留最后一次内容。
< : 将输入流重定向到其他文件。没有“<<”
例如:./a.out 1 >> a.txt 表示将标准输出流(1)重定向到 a.txt文件,输出信息不再显示于屏幕,而是记录到a.txt文件。
./a.out < input.txt 表示将标准输入流重定向到input.txt文件。输入不再从键设备读取,而从文件读取。
./a.out 2 > f.txt 表示将标准错误流(2)重定向到f.txt文件, 当程序执行的返回值不为0时, 程序输出的内容会记录在f.txt文件中。
输出流重定向:./文件名.out 0/1/ (标准输入流/标准输出流/标准输出流)>> 文件名.txt
文件默认输出到终端,重定向后,输出到指定地方
读取文件内容,并显示到终端:cat 文件名.文件类型
重复重定向,文件内的记录会保存起来,不会被覆盖。
查看路径文件,并把结果保存到文件里:ls /路径名 >> 文件名.txt
只查看最新的重定向文件内容: ./文件名.out 0/1/ > 文件名.txt
ls /路径名 > 文件名.txt
输入流重定向: ./文件名.out < 输入文件.txt(预先把输入的数据写在输入文件里)
标准错误流返回值不能等于0
分别把结果导入不同文件: ./文件名.out 1>文件名1.txt 2>文件名2.txt
文件名1是标准输出流;文件名2为标准错误流
1.
echo $? 查看标准错误流是否被执行了
1输出流 (2是错误流) 1>> a.txt 输出重定向到a.txt 默认输出到终端 (1也可以不写)
如果使用 > 的话就是将输出的更新即覆盖原先输出到这里的内容,而>>则是在末尾增加新的内容
<是重定向输入流
输出重定向:> 和 >> >表示覆盖,>>表示追加
输入重定向:<
例:./a.out>>a.txt //不会输出到显示屏而保存在文件中