不,/dev/stdin
并且/dev/stdout
是错误的设备。这些不是终端设备,它们分别是标准输入和标准输出的别名。按照定义,标准输入和标准输出是应用程序期望打开的文件描述符,它们具有常规含义(文件描述符分别为0和1,还有2是标准错误)。当应用程序需要文件名但应用程序的用户希望它访问特定的文件描述符而不是打开某些文件时,诸如/dev/stdin
和之/dev/stdout
类的设备很有用。根据unix变体的不同,它们甚至可能不是设备文件。例如,在Linux上,它们是指向/proc/self/fd/0
和朋友,而这些又是指向该文件描述符上已打开的任何文件的“魔术”符号链接。
更改的权限,/dev/stdin
并且/dev/stdout
只会更改显式使用这些文件名时发生的情况。它不会影响与终端相关的任何内容,也不会影响标准输入和标准输出的正常使用,因为权限仅在打开特定文件名时才重要。
什么mesg
确实是改变过程的的权限控制终端。对于在终端中运行的应用程序,将在标准输入,标准输出和标准错误(文件描述符0、1和2)下打开终端。您可以使用该命令tty
查看终端设备是什么。mesg n
等同于chmod g-w "$(tty)"
并mesg y
等同于chmod g+w "$(tty)"
。
mesg n
可以使用权限来影响未来write
唯一的,因为write
没有已有的终端开放。