搞清楚什么是标准输入输出。首先你需要了解什么是IO。IO的I表示输入,O表示输出。表示输入和输出。更准确的意思是I:从外部设备输入到内存O:从内存输出到外部设备什么是标准输入和标准输出?它们用于IO。那么他们属于IO的哪一部分呢?记忆?还是外接设备?答案显然是外部设备(逻辑外部设备,为什么?继续阅读)。更具体的意思?在linux操作系统中,外部设备的名称是什么?它与文件一起。linux中的所有设备都是文件!所以标准输入输出更具体的含义是文件。是哪两个文件?它们是文件/dev/stdin和文件/dev/stdout。也就是说,所谓的标准输入和标准输出,在Linux下其实就是两个文件。linux的文件类型有:1.普通文件2.字符设备文件3.块设备文件4.目录文件5.链接文件6.管道文件7.套接字文件想一想?它们是什么文件?它们在/dev目录中,它们是设备文件吗?那么从标准输入读取是什么意思呢?从逻辑上看:就是打开文件/dev/stdin,然后读取这个文件的内容。输出到标准输出是什么意思?从逻辑上看:就是打开文件/dev/stdout,然后将内容输出到这个文件中。为什么合乎逻辑?因为它们不是设备文件!!!所以他们不代表一个设备。linux中一切都是文件,设备也是文件,但文件不一定是设备!那它们是什么文件?它们是链接文件。(l开头的链接文件可以用ls-l/dev查看。)什么是链接文件?内容是另一个文件地址的文件称为链接文件。因此,打开、读取或写入/dev/stdin和/dev/stdout实际上是打开、读取或写入这两个文件所在地址对应的设备文件。了解它们是链接文件而不是设备文件有什么用?只有理解了这一点,才能知道重定向失败的原理。更多关于下一篇文章!
