Articles of tty

如何更改Linux上的tty组(使用buildroot构build)

我正在使用Buildroot为embedded式设备开发Linux Kernel 3.14.28版本。 在/dev/ ,所有的ttys都是root:root而不是root:dialout像标准的Linux一样root:dialout 。 因此,不能以root身份login任何ttyX。 如何将tty组永久更改为root:dialout ? 我尝试用chown命令改变它,但是在重新启动时它又变成了root:root 。

QFileDialog不会在Linux上的/ dev /列出tty *文件

我正在开发需要打开USB串行端口的Linux桌面应用程序,通常是/ dev / ttyUSB0或/ dev / ttyUSB1。 我正在使用QFileDialog让用户select文件: QFileDialog dialog(this); dialog.setFileMode(QFileDialog::AnyFile); dialog.setFilter(QDir::System | QDir::AllEntries | QDir::Hidden); dialog.setViewMode(QFileDialog::Detail); QStringList fileNames; if (dialog.exec()) fileNames = dialog.selectedFiles(); 当我将FileDialog指向/ dev时,通过input“ls / dev -al”可以看到没有任何文件存在。 目录显示,但是例如,这个文件没有: $ ls -al /dev/ttyS0 crw-rw—- 1 root dialout 4, 64 2011-10-09 10:47 /dev/ttyS0 我的用户是拨出组的成员: $ groups luke adm dialout cdrom audio video plugdev users fuse […]

在Ubuntu 12.04中使用USB来串行 – 缺less/ dev / ttyUSB0

我正在尝试将一个usb串行适配器连接到Ubuntu 12.04(在VM上)。 出于某种原因,它没有/ dev条目。 我尝试了几个不同制造商的适配器 – 没有成功。 另外,我有一个连接适配器的10.04 VM,它立即出现在/ dev / ttyUSB0中 我不是一个非常熟练的Linux用户。 我需要安装某种驱动程序吗?

bash:当stdout不存在时该怎么做

在一个非常简化的情况下,我有一个如下所示的脚本: mv test _test sleep 10 echo $1 mv _test test 如果我执行它: ssh localhost "test.sh foo" 只要脚本正在运行,testing文件的名称中就会有一个下划线,当脚本完成时,它将发回foo 。 脚本应该保持运行,即使你通过按ctrl+c终止ssh命令,或者如果你失去了服务器的连接,但它不会(该文件不会重新命名为“test”)。 所以,我尝试了以下几点: nohup ssh localhost "test.sh foo" 它使得ssh免受ctrl+c但与服务器的连接仍然很麻烦。 经过一些debugging,事实certificate,脚本将实际到达结束,如果没有ECHO的话。 而当你考虑这个问题的时候,这是有道理的 – 当连接断开时,没有更多的stdout (ssh套接字)可以回应,所以它会自动失败。 我可以,当然,回声到一个文件,然后得到的文件,但我更喜欢更聪明的东西,沿着test tty && echo $1 (但tty像这样调用总是返回false )。 任何build议,非常感谢。

如何输出到当前可见的terminal

我想输出一些文本作为对SIGUSR1信号的响应 即用户发送kill -USR1 <pid>到在后台或另一个terminal启动的进程。 我想在终止的地方得到一些输出。 我怎样才能做到这一点?

terminal仿真器和TTY设备之间的关系是什么?

我发现这个真棒文本解释很多关于TTY设备。 它着重于TTY设备和shell(及其产生的作业)之间的关系。 但是对于terminal仿真器和TTY设备的关系, 现在我想知道这个。 我GOOGLE了,但我找不到答案… 1)terminal模拟器负责哪种input逻辑? 它只是将每个字符代码(由窗口事件接收)发送到TTY设备,或者在传输到TTY之前/期间执行更复杂的处理? 以及这些字符代码如何发送到TTY设备? 通过文件? 2)在前台进程调用write()到TTY设备文件(又名stdout / stderr )后会发生什么? 这个数据如何到达terminal模拟器进程,所以它可以被渲染? 再次,通过文件? 3)terminal仿真器是否负责“分配”TTY设备? TTY设备可以由内核“即时”创build,或者内核可以pipe理的有限数量的可用TTY设备?

一个进程如何知道什么时候是背景?

当我scp文件,我可以用^ Z停止它,并把它放在后台。 当它在后台停止打印它的进度,但复制继续。 如果我再次前景,它将恢复打印。 它是如何知道的? SIGTTOU? 这是否发生在一个标准的Ptty?

Open在不同的进程中返回相同的文件描述符

系统:Ubuntu 12.04 编译器:gcc(版本:4.6.3) 我的想法是编写一个客户端 – 服务器应用程序来通过串口交换数据。 但我的问题是,当我执行下面的代码片段时,打开返回相同的文件描述符,如果我启动两个独立的进程: 第一个进程打开“/ dev / ttyS0”。 第二个进程打开“dev / ttyS1”。 …. serialPortDescriptor = open(portName, O_RDWR | O_NOCTTY | O_NDELAY | O_EXCL); if (serialPortDescriptor == INVALID_SERIALPORT_DESCRIPTOR) { return SERIALPORT_UNKNOWN_ERROR; } ….. open是否正常返回两个不同进程/程序中不同设备/path名(“dev / ttyS1”和“dev / ttyS0”)的相同文件描述符值?

在TTY中如何实现terminfo延迟/填充?

我一直在看terminfo,在能力string中有延迟,例如$<5> 。 我试图通过运行tput看看延迟是如何实现的,也就是说,它是通过例如nanosleep还是通过插入NUL或其他字符来实现的。 这是我试图运行和跟踪的命令: TERM=ansi77 strace -o log.txt tput dl1 我在dl1上select了dl1 ,因为它被定义为dl1=\E[M$<5*/> 。 但是,我在跟踪中看到的全部是3个字节的写入: write(1, "\33[M", 3) = 3 所以,我的问题是,延迟如何实现? 填充字符或简单的进程/线程睡眠? 我可以在terminal仿真器中观察它,还是需要真正的硬件terminal才能看到它? 有没有试图用tput重现它的缺陷?

如何在特定的/ dev / ttyX(或/ dev / pts / X)设备上启动bash?

– 真实的设备 – 比方说,我在/ dev / ttyACM0上连接了一根UART电缆(还有另一台计算机连接到电缆的另一端),我该如何在该/ dev / ttyACM0设备上启动一个bash会话? 所以我的其他电脑将能够执行bash命令? – 伪terminal – 另外一个例子,假设我在device / dev / ptmx中打开了cutecom或者minicom,它会创build一个对应的/ dev / pts / X设备。 我如何启动一个bash会话在创build的/ dev / pts / X上运行? 如果我理解正确,如果在真实或伪terminal上运行,则无关紧要(或getty)。 所以我认为GUIterminal(如xterm)读取/ dev / ptmx并在相应的/ dev / pts / X上启动一个bash,如果这是真的,那么我应该可以做同样的事情,那我该怎么做呢? 还是我的理解错了?