趣文网 > 作文大全

一张图带您理解linux 的标准输入和标准输出

2020-12-01 20:45:01
相关推荐

通过一张图带您理解linux 的标准输入输出概念,这里的终端处理程序代表操作系统内核。

先给大家看一个很熟悉的例子:

[root@testLinux ~]# ifconfig --查看网卡相关信息。

ifconfig 命令输出结果

从这里可以看出当运行ifconfig 这个命令,操作系统就会通过显示器输出网卡相关信息,现在我们再回过头去理解上图从键盘到终端处理程序的这个过程,我们从键盘输入命令,然后交给操作系统内核执行之后在输出这样一个过程,因此我们将这里的这里的键盘叫标准输入,而输出的结果通过显示器显示出来叫标准输出,再来看下一个命令的输出结果

[root@testLinux ~]# cat /etc/cmss 由于这个文件夹不存在,因此系统输出了错误的输出,那么我们就称这种输出叫标准错误输出。

由于linux 系统的特性,所有设备都用文件表示,因此上图的键盘(标号1)作为标准输入设备,它 在linux 里面用/dev/stdin 文件表示,标准输出设备 (标号3) 即为显示器用/dev/stdout 文件表示,而标准错误输出设备(标号4)用/dev/stderr文件表示。

1)标准输入(STDIN) ,文件位置: /dev/stdin ,文件描述符为0

2) 标准输出 (STDOUT),文件位置:/dev/stdout , 文件描述符表示为1

3) 标准错误 (STDERR),文件位置:/dev/stderr 文件描述符表示为2

那么这里何为文件描述符呢?

我们知道操作系统运行一个命令或者软件,操作系统会为该命令或者软件分配一个进程,为了区分不同的进程操作系统使用进程号表示,那怎么知道这些进程操作了那些文件呢,因此就使用文件描述符表示操作系统操作的哪些文件,下面以一个例子说明。

例如:在后台一直运行这个命令

[root@testLinux network-scripts]# tail -f /etc/sysconfig/network-scripts/ifcfg-ens33

查看该命令对应的进程号:通过 ps 命令查看到该命令对应的进程号是 7280

进程号

接下里查看该进程操作的文件

[root@testLinux network-scripts]# cd /proc/7280/fd

这个目录下面对应的文件即为进程号7280操作的文件,用0,1,2,3...这样的数字表示,这些数字也是文件只不过是链接文件而已,这里的数字有一个专门的名称叫文件描述符,从这里可以得出一个操作系统内核分配一个进程的路径是这样的,在/proc/进程号/fd/ ,fd下面即为该命令或者程序操作的文件。

下面再来看一个进程号为7349操作的文件

从图中可以看出该进程操作的磁盘文件是/etc/passwd,同样这里还是有0,1,2 三个文件,因此这里可以得出的结论是无论进程操作的文件是怎样的,标准输入,标准输出,标准错误输出这三个文件都是必须要的,他们分别代表键盘,显示器,这里有个难以理解的点在于,标准输出和标准错误输出设备默认也是指显示器,只是为了区别用了不同的文件表示而已。

阅读剩余内容
网友评论
相关内容
小编推荐

大家都在看

我笑了作文200字 写陌生人的作文600字 写秋天景作文 最美的我作文 童年的趣事作文三百字 小学二年级 作文 西安高考语文作文题 森林防火作文600 燕子搭窝作文 青年作文素材 关于珍惜水的作文 作文关于动物 垃圾分类作文400 理想600字作文 最好的作文600字 六一儿童文艺汇演作文 骄兵必败作文 一件艺术品作文 热爱和平的作文 回报父母的爱作文 宝石花的作文 雾霾作文600字 科学小发明作文 书包作文300字 童话作文 关于桂林的英语作文 兴趣爱好作文300字 变幻莫测的天气作文 妈妈的疼爱作文 作文怎么写400字