Linux下的stdout,stdin,stderr
2012-10-19 17:01
477 查看
stdout, stdin, stderr的中文名字分别是标准输出,标准输入和标准错误。
在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据流,也就是题目中所提到的这三个。那么什么是数据流呢(stream)?我们知道,一个程序要运行,需要有输入、输出,如果出错,还要能表现出自身的错误。这是就要从某个地方读入数据、将数据输出到某个地方,这就够成了数据流。
因此,一个进程初期所拥有的这么三个数据流,就分别是标准输出、标准输入和标准错误,分别用stdout, stdin, stderr来表示。对于这三个数据流来说,默认是表现在用户终端上的,比如我们在c中使用fprintf:
fprintf(stdout, "hello world!\n");
屏幕上将打印出"hello world!"来,同样,我们使用:
上面的代码会接收用户输入在终端里的字符,并存在ptr中。
fread(ptr, 1, 10, stdin);
那么标准输入输出和错误是不是只能反应在终端里呢?答案是不是的!我们可以将标准输入和输出重定位到文件中:例如,我们使用ls命令,会把当前目录下的文件名输出到终端上.我们也可以使用
“ > ”符号,将ls的标准输出重定向到文件中:ls > tmpout,同样,我们也可以使用“ < ”符号将标准输入重定向到文件中。
原文参考:http://www.spongeliu.com/199.html
在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据流,也就是题目中所提到的这三个。那么什么是数据流呢(stream)?我们知道,一个程序要运行,需要有输入、输出,如果出错,还要能表现出自身的错误。这是就要从某个地方读入数据、将数据输出到某个地方,这就够成了数据流。
因此,一个进程初期所拥有的这么三个数据流,就分别是标准输出、标准输入和标准错误,分别用stdout, stdin, stderr来表示。对于这三个数据流来说,默认是表现在用户终端上的,比如我们在c中使用fprintf:
fprintf(stdout, "hello world!\n");
屏幕上将打印出"hello world!"来,同样,我们使用:
上面的代码会接收用户输入在终端里的字符,并存在ptr中。
fread(ptr, 1, 10, stdin);
那么标准输入输出和错误是不是只能反应在终端里呢?答案是不是的!我们可以将标准输入和输出重定位到文件中:例如,我们使用ls命令,会把当前目录下的文件名输出到终端上.我们也可以使用
“ > ”符号,将ls的标准输出重定向到文件中:ls > tmpout,同样,我们也可以使用“ < ”符号将标准输入重定向到文件中。
#include <stdio.h> #include <unistd.h> int main() { while(1) { fprintf(stdout,"hello-out"); fprintf(stderr,"hello-err"); sleep(1); } return 0; }如上程序(摘自:http://www.gowrikumar.com/c/),执行结果会是怎样呢?结果是一直输出“hello-err”而不会有hello-out,原因是stdout是行缓冲的,它的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕。而stderr是无缓冲的,会直接输出。
原文参考:http://www.spongeliu.com/199.html
相关文章推荐
- Linux下如何重新打开标准输入输出(stdin,stdout,stderr)
- Linux下Bash的数据流重导向,stdin,stdout,stderr
- linux中stdout,stdin,stderr意义
- linux下stdin和stdout以及stderr
- Linux下的Stdin Stdout Stderr
- linux 输入--输出--重定向 stdin/stdout/stderr
- linux下的stdin,stdout,stderr详解
- 【转】Unix/Linux下的stdout,stdin同stderr
- linux下的stdin,stdout和stderr理解
- linux 命令之 tee find whereis locate 及stdin stdout stderr
- Linux 下 stdin stdout stderr 的由来
- Linux stdin stdout stderr
- linux 0.11 STDOUT STDIN STDERR 的创建
- linux下的stdin,stdout,stderr详解
- 利用stdin stdout stderr及POSIX-linux机制重定向写日志
- linux中stdout,stdin,stderr意义
- Unix/Linux下的stdout,stdin和stderr
- Linux守护进程的stdout, stdin, stderr
- linux中stdout,stdin,stderr
- linux下的stdout,stdin,stderr