问题标签 [stty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - 使用 stty -icanon 时如何读取返回值
在设置 stty -icanon time 0 min 0 以防止读取阻塞后,我有一个循环。
它工作正常,只是它无法读取输入/返回键。
有没有办法在这种模式下读取回车键,或者我的代码可以用任何其他方式编写?
相关代码
bash - “stty raw -echo”在 OS X 上做了什么
当我尝试时:$ stty raw -echo
在我的终端上(OS X 10.6 上的 Bash)。它会做一些事情,就像终端挂在那里一样。然后我查了手册:
stty — 设置终端设备接口的选项
原始(-原始)
如果设置,则更改终端的模式,以便不
执行输入或输出处理。如果未设置,则将终端的模式更改为执行输入和输出处理的某种合理状态。请注意,由于终端驱动程序不再具有单个 RAW 位,因此无法直观地知道在设置 raw 之前设置了哪些标志。这意味着取消设置 raw 可能不会恢复以前有效的所有设置。要将终端设置为原始状态,然后准确恢复,建议使用以下 shell 代码:回声(-echo)
回显(不回显)每个键入的字符。
所以它应该将终端转为原始模式,然后按原样返回我输入的内容?有人可以解释一下这个命令是做什么的吗?当参数有破折号时有什么区别,例如raw
和-raw
?他们的意思是一样的吗?有什么资源可以让我学习吗?
php - PhpSerial: No stty available -- cant seem to get it working
I'm working on a project which involves reading and writing to a Serial board, using the UART pins on my Raspberry Pi. However, I have hit a brick wall already. Any time I try use PhpSerial
I always get the error:
Fatal error: No stty available, unable to run. in /var/www/PHP-Serial/examples/PhpSerial.php on line 56
I've tried numerous configurations with the input:
php/lighthttpd
is running as www-data, Ive tried chowning the /dev/ttyAMA0
to that user, and I've added the dialout group to said user. I cant see any disable functions or anything in my php.ini. I've also don't the standard setup for using serial devices on the pi as per the wiki, and I am able to read/write data to and from the circuit using
sudo minicom -b 38400 -o -D /dev/ttyAMA0
Here are the line(s) that the error is referring to:
I can't make sense of it but someone else might. Thanks in advance.
linux - .inputrc 覆盖 Control+W
如何在我的 .inputrc 中覆盖 bash 中的 Control+W?以下内容本身不起作用:
当我添加时它确实stty werase undef
有效,但是's'键被神秘地禁用了!
stty - 使用 Linux bash 将 DTR 设置为高,RTS 设置为低?
我有一个没有流量控制的串行设备,但通过将RTS 保持在高电平和DTR保持在低电平从RS232端口供电
我希望使用简单的 bash 脚本从该设备读取数据,但找不到任何方法来设置握手线,使用 stty 或其他方式,以允许上述配置。
如果可能的话,有什么想法吗?
python - 运行 Python 脚本后终端混乱(不显示新行)
我有一个 Python 脚本,用于使用 Python 子进程模块跨多个主机并行执行命令。它包装了 SSH,基本上是这样调用的:
有效的命令是这样执行的:
它工作正常,除了在运行脚本后我的终端出现混乱(丢失换行符)时出现间歇性错误。命令行中的“重置”可以修复它,但我不确定这是如何发生的。我注意到有时元组输出中第一项的末尾有一个“\r\n” ,有时它不存在。请参阅以下内容,特别是“ Permission denied\r\n”:
第二个输出稍作修改,但显示了丢失的"\r",以及运行脚本后我的提示如何“变坏”。
我认为这与在我的子进程命令中使用“-t”选项有关。不知何故,我失去了 \r。如果我删除“-t”选项,这个问题就会消失,但长话短说,我需要它来传递环境变量以在远程机器上使用(我正在使用 TERM 变量来传递用户的密码sudo 的目的,因为我不能假设 AcceptEnv 允许在远程 sshd 服务器上传递任意变量;我这样做是为了避免在命令行上传递密码,这将显示在远程机器上的进程列表中)。
只是想知道是否有人知道在不删除“-t”选项的情况下解决此问题的方法?
更新:在我的脚本中运行subprocess.Popen(...).communicate()命令 后,我的 tty 设置似乎发生了变化,无论我是否实际将输出打印到屏幕上。我觉得这真的很奇怪。以下是我的 tty 配置中的前后差异(来自 stty -a):
我想知道如何阻止communicate() 改变我的终端设置?有可能吗,或者这是一个错误?
c - 在没有 O_NONBLOCK 标志的情况下,在 OS X 上打开串行端口会永远挂起
我有一个串行到 USB 转换器(FTDI,从http://www.ftdichip.com/Drivers/VCP.htm安装的驱动程序)将串行设备连接到 MacBook Air。它在 MacBook 上显示为/dev/cu.usbserial-A4017CQY
和/dev/tty.usbserial-A4017CQY
。无论我使用这两个中的哪一个,我描述的所有行为都是相同的。
编辑:使用/dev/cu.*
确实解决了问题。我不确定为什么当我第一次发布这个问题时它似乎不起作用。感谢duskwuff 为我指明了正确的方向,尽管他的TTY 名称倒过来了:/dev/tty.*
将等待流量控制,而/dev/cu.*
不会。
open()
我遇到的第一个问题是,如果我不使用该O_NONBLOCK
标志,系统调用将永远阻塞。使用该标志,我得到了一个很好的文件描述符,但write()
似乎并没有真正写入(尽管它返回很好,声称已写入字节),并且read()
失败并出现错误“资源暂时不可用”。
stty -af /dev/cu.usbserial-A4017CQY
显示设置就好了,但是如果我尝试使用类似的命令更改它们,stty -f /dev/cu.usbserial-A4017CQY -clocal
当连续调用stty
.
如果我select()
在读/写之前等待设备准备好,它会在短时间内报告它已准备好写入,但永远不会读取。这与如何write()
毫无怨言地完成,而read()
失败。请注意,写入的数据从未真正进入设备。
我为调试而编写的整个测试程序如下:
shell - 非交互模式下的 stty
我正在通过非交互模式的远程服务器中的脚本执行命令。我浏览了链接,发现下面的错误是因为在非交互模式下运行 stty。[URL="http://compgroups.net/comp.unix.shell/stty-invalid-argument-using-ssh /506594"] http://compgroups.net/comp.unix.shell/stty-invalid-argument-using-ssh/506594[/URL]
stty 用于不在终端中显示密码。但是我得到了stty:标准输入:输出中的参数无效。
如何在我的输出中摆脱/克服这个错误。
terminal - 终端中未检测到 Ctrl 键
我的 Mac 终端有问题。它不再能够检测到 ctrl 键,所以我不能再使用诸如^C
停止正在运行的任务之类的快捷方式,因为当我按ctrl+时C,终端只会回显“c”字符。
我试过了stty -a
,intr似乎没问题:
关于如何解决它的任何想法?
c - 用c编写一个简单的游戏
到目前为止,我已经制作了一张简单的地图(由终端中的字符组成),我正试图让一个“O”在其中移动。我发现每次我想移动时都必须按 Enter 键,这很烦人。我找到了 stty 命令,我想检查当前状态是什么,将其设置为原始状态,完成后将其返回到之前的状态。如果有人知道更好的方法,我很想听听。我正在使用 Ubuntu。
编辑:这是我所做的:
我是初学者。