从这个对Linux 的回答: /dev/console 、 /dev/tty 和 /dev/tty0 之间的区别
从 文档:
Run Code Online (Sandbox Code Playgroud)/dev/tty Current TTY device /dev/console System console /dev/tty0 Current virtual console
在过去的美好时光
/dev/console
是系统管理员控制台。TTY 是用户连接到服务器的串行设备。现在/dev/console
和/dev/tty0
代表当前的显示通常是一样的。例如,您可以通过添加console=ttyS0
到grub.conf
. 之后,您/dev/tty0
是监视器,并且/dev/console
是/dev/ttyS0
.
通过“系统控制台”,/dev/console
就像是一个文本物理终端的设备文件,就像/dev/tty{1..63}
是虚拟控制台的设备文件。
通过“/dev/console
并/dev/tty0
代表当前显示和通常是相同的”,/dev/console
在我看来它也可以是虚拟控制台的设备文件。/dev/console
似乎更像/dev/tty0
是/dev/tty{1..63}
(/dev/tty0
是当前活动的虚拟控制台,可以是 中的任何一个/dev/tty{1..63}
)。
什么是/dev/console
?它是干什么用的?
不/dev/console
玩了Linux内核相同作用/dev/tty
的过程?(/dev/tty …
伪终端有一对主从。
我们如何从从设备文件(例如/etc/pts/3
)中找出主设备文件?我只找到/dev/ptmx
and /dev/pts/ptmx
,但它们不能被多个奴隶共享。
给定一个进程在 master 和 slave 上工作,我们如何找出另一个?例如,ps
提供有关每个进程的控制 tty 的信息。有帮助吗?
谢谢。
我正在尝试弄清楚如何在我拥有的 pt master 上可靠地循环读取。\n我打开 ptmx,照常授予并解锁它:
\n\n* ptmx stuff */\n/* get the master (ptmx) */\nint32_t masterfd = open("/dev/ptmx", O_RDWR | O_NOCTTY);\nif(masterfd < 0){\n perror("open");\n exit(EXIT_FAILURE);\n};\n\n/* grant access to the slave */\nif(grantpt(masterfd) < 0){\n perror("grantpt");\n exit(EXIT_FAILURE);\n};\n\n/* unlock the slave */\nif(unlockpt(masterfd) < 0){\n perror("unlockpt");\n exit(EXIT_FAILURE);\n};\n\ncomms_in->ptmx = masterfd;\n
Run Code Online (Sandbox Code Playgroud)\n\n接下来我保存奴隶的名字(是的,我知道 sizeof(char) 始终为 1)
\n\n/* get the path to the slave */\nchar * slavepathPtr;\nchar * slavePath;\nsize_t slavepathLen;\nif((slavepathPtr = ptsname(masterfd)) == NULL){\n perror("ptsname");\n exit(EXIT_FAILURE);\n}else{\n slavepathLen = strlen(slavepathPtr);\n slavePath = (char *) malloc(sizeof(char) * (slavepathLen …
Run Code Online (Sandbox Code Playgroud) 如果我打开终端并执行w
命令,它将显示:
user tty7 :0 12:04 39:56 36.87s 0.06s /sbin/upstart -
Run Code Online (Sandbox Code Playgroud)
现在,如果打开terminator
或xterm
执行w
命令,那么它将在w
命令的输出中显示它的条目,例如
user tty7 :0 12:04 39:56 36.87s 0.06s
/sbin/upstart -
user pts/2 :0.0 12:50 1.00s 0.02s 0.00s w
Run Code Online (Sandbox Code Playgroud)
但是当我打开gnome-terminal
或时它不会显示新条目xfce4-terminal
。为什么它为终结者而不是 xfce4-terminal 显示新会话?
我想将 linux 终端流式传输到我自己的程序,据我所知,这是通过打开 /dev/ptmx 来启动一个新的 pts 来完成的,我已经测试过了,这确实有效(它在/dev/pts)。但我不确定我应该如何实际读写这个终端。直接写入 /dev/pts/(pts number) 我只是得到一个输入/输出错误。另外,我是否应该使用相同的程序同时打开 /dev/ptmx 和 /dev/pts/(pts number) 。我应该先以某种方式打开一个外壳吗?
我发现这些东西有点令人困惑,除了这个手册页http://man7.org/linux/man-pages/man4/pts.4.html之外,我找不到太多信息