接着上节课的标准输出讲。
视频最后我们通过重定向把标准输出写到了文件中,但是错误输出还是留在了屏幕上。
root@turbo:~# ls test test.c root@turbo:~# root@turbo:~# ./test xxxxxx 错误输出 ------ 标准输出 root@turbo:~# root@turbo:~# ./test > out.log xxxxxx 错误输出 root@turbo:~# root@turbo:~#有没有什么方法把错误输出也写到文件里面?
#include运行程序的时候会在屏幕上打印字符串,如果希望把这些字符串收集起来,运行的时候加上输出符号和文件名,字符串就写到了文件里面。int main() { //fprintf(stderr, "xxxxxx 错误输出 "); fprintf(stdout, "------ 标准输出 "); return 0; }
root@turbo:~# gcc test.c -o test root@turbo:~# ./test > out.log root@turbo:~#一个符号表示清空文件重新写入,两个符号表示往文件的后面追加。
#include代码的运行现象是这样的:int main() { fprintf(stderr, "xxxxxx 错误输出 "); fprintf(stdout, "------ 标准输出 "); return 0; }
root@turbo:~# ls test test.c root@turbo:~# ./test xxxxxx 错误输出 ------ 标准输出 root@turbo:~#如果像刚才一样加上重定向,那只能把标准输出写到文件中:
root@turbo:~# ls test test.c root@turbo:~# ./test > out.log xxxxxx 错误输出 root@turbo:~# root@turbo:~#其实这种写法也等价于这样的:
root@turbo:~# ls test test.c root@turbo:~# ./test 1> out.log xxxxxx 错误输出 root@turbo:~# root@turbo:~#0 1 2在 Linux 中分别表示标准输入、标准输出、标准错误处理,大部分时候我们会把1省略掉。
root@turbo:~# ls out.log test test.c root@turbo:~# ./test 1> out.log 2> error.log root@turbo:~#意思也很明确,标准输出写到文件out.log中,错误输出写到文件error.log中。
root@turbo:~# ./test > out.log 2>&1 root@turbo:~#
2>&1这个符号的意思就是把错误输出重定向到标准输出。
root@turbo:~# ./test > /dev/null 2>&1 root@turbo:~#
全部0条评论
快来发表一下你的评论吧 !