- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
手册页在这里:http://man.cat-v.org/unix-6th/3/ttyn
这个例子:
if (ttyn(0) = 'x'){
...
}
手册页说“如果指示的文件不对应于 打字机。”
指示的文件将是参数 0,所以是标准输入,对吗?
什么是打字机?我的键盘?
你用这条线检查什么?
if (ttyn(0) = 'x')
最佳答案
当时,打字机(或电传打字机或 tty)是通过串行端口连接到计算机的 RS-232 终端。 /dev
中对应这些端口的设备条目分别命名为/dev/tty0
、/dev/tty1
、/dev/ttya
等。这些文件中的每一个都是字符特殊文件,而不是普通文件。
当系统检测到终端时,通常是通过打开或通过调制解调器连接,init
进程在新进程中的文件描述符 0、1 和 2 上打开设备,并且这些文件描述符在登录过程、用户的 shell 以及从 shell 派生的任何进程中持续存在。
正如您在问题中所说,文件描述符 0 也称为标准输入。
ttyn
函数在其参数上调用 fstat
,它返回有关文件的一些信息,例如其 inode 号、权限等。ttyn
然后读取 /dev
,查看每个以 "tty"
开头的文件,看看哪个文件的 inode 号与 ttyn
相同的说法。当它找到匹配项时,它返回文件名的第 4 个字符,即 '0'
、'1'
、'a'
等。如果未找到匹配项,则返回 'x'
。
PDP-11 上通常有一个控制台和几个 8 端口串行接口(interface)。所以没有 ttyx
。您可以在 /dev
中为设备命名任何您想要的名称。因此很容易避免 /dev/ttyx
成为实际设备。
像 goto
这样的命令可以使用 ttyn(0) != 'x'
来确定用户是否真的在终端上键入命令。
Here是默认配置文件,/etc/ttys
,由 V6 中的 init
使用。控制台是 tty8
。
在 V7 Unix 中,ttyn 的功能被 ttyname 取代,可以容纳更长的设备名称,以及 isatty ,如果文件描述符是终端设备,则返回 true。 goto命令在 V7 中不存在。
关于tty - 函数 ttyn(3) 返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27681693/
我正在阅读The TTY demystified ,试图对 tty、pty 有一些了解。 读完前半部分。当我在 xterm 或 ssh 中输入一些命令时,我无法全面了解整个事情是如何工作的。 下图是我
假设我登录到终端 tty1,现在我想从 tty1 运行一个脚本,它会自动让我登录到 tty2、tty3、tty4。当然,我不想到处输入密码和用户名,因为我已经在 tty1 上进行了身份验证。 问题:如
为什么在我将 CentOS 作为 Docker 容器启动后,当我运行 tty 时,我得到: # tty not a tty 不是 tty 的原因是什么? 最佳答案 docker run 不会模拟 TT
我正在尝试通过 php 安装 composer,如他们的网站所述。 php -r "readfile('https://getcomposer.org/installer');" | php 但它显示
我正在运行一个 docker 容器并正在检查它。我发现 "Config": { "Hostname": "amb1.service.consul", "Domainname": "", "User":
我想用 2 个 xterm 窗口调试控制台 linux 应用程序:一个窗口用于 gdb,另一个用于应用程序(例如 mc)。 我现在要做的是在第二个 xterm 窗口中运行“tty && sleep 1
docker exec -it 命令返回以下错误“无法在非 tty 输入上启用 tty 模式” level="fatal" msg="cannot enable tty mode on non tty
这是命令的输出: Step 5/7 : RUN ./vendor/bin/laravel new --force testapp ---> Running in dc92e378b12a Craft
请帮助 MySQL Git Bash winpty mysqldump。 “winpty mysqldump”在 Git Bash 中不工作。这里是错误的详细信息: Git 狂欢 $ winpty m
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我一直在试图弄清楚 TTY 驱动程序是如何工作的(充分理解每个内核的实现可能不同),并且偶然发现了一篇不错的文章:The TTY demystified 但是我注意到它声称 xterm 没有 stdi
我正在使用 fork() 和 execvp() 来生成一个进程,该进程必须相信它已连接到交互式终端才能正常运行。 生成后,我想捕获进程的所有输出,并能够将输入发送到进程。 我怀疑 psuedo-tty
我在 ReactJs + 样式组件中遇到这个错误。我该如何解决? Compiled with problems: ERROR in ./node_modules/colorette/index.js
我在 ReactJs + 样式组件中遇到这个错误。我该如何解决? Compiled with problems: ERROR in ./node_modules/colorette/index.js
你好,这是我的脚本: import sys import LED import os import subprocess if __name__ == '__main__': LED_BLUE
我有几个问题。一,如何确定程序使用的 TTY,然后将其作为参数传递给另一个程序? 此外,我正在使用 writevt 程序,并将字符串发送到 TTY 设备。它工作正常,但不使用我发送它的回车符。所以,我
我想从内核空间写入 tty,并且只能访问该特定 tty 的主要和次要设备号。 我通过系统调用进入内核,该系统调用工作正常,并且能够通过使用写入当前 tty my_tty = current->sign
我最近注意到我的系统(运行在 AT91SAM9G15 上)有一个非常奇怪的行为:尽管我一直在读取串行端口,但 TTY 驱动程序有时需要 1.2 秒才能从输入队列传送数据。事情是:我没有丢失任何数据,只
我在没有屏幕的硬件上运行 linux,并将所有数据转储到串口。我正在通过 hyperterm 或 teraterm 等应用程序阅读 linux 序列。我得到了正确格式化的串行输出。但是,如果我将该输出
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我是一名优秀的程序员,十分优秀!