标签: tty

venv 内的 python3 给出 termios.error: (25, '不适合设备的 ioctl')

我一直在我创建的虚拟环境中运行 python 脚本pipenv shell,它运行良好。

我总是从 bash 脚本运行该进程,该脚本将目录更改为包含 python 脚本的文件夹,使用 激活 virtualenv pipenv shell,然后运行 ​​python 脚本,然后退出 virtualenv。

但是,我一定在终端中输入了错误的内容并破坏了某些内容,现在当我在虚拟环境中运行脚本时,我得到了这个:

Launching subshell in virtual environment...
Traceback (most recent call last):
  File "/home/manuel/.local/bin/pipenv", line 8, in <module>
    sys.exit(cli())
  File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/manuel/.local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
    return callback(*args, …
Run Code Online (Sandbox Code Playgroud)

python linux ioctl tty pipenv

6
推荐指数
0
解决办法
1189
查看次数

在 Git Bash 中,如何修复“stdin 不是 tty”错误?

我在 Windows 10 上使用 Git Bash。我想导入一个 SQL 文件以在我的 PostGres 12 本地数据库中运行。我尝试了下面的

$ PGPASSWORD=$DB_PASSWORD psql -U${DB_USER} $DB_NAME < scripts/my-script.sql
stdin is not a tty
Run Code Online (Sandbox Code Playgroud)

当我查看数据库时,脚本尚未运行,这使我相信错误消息告诉了我原因,但我不确定它的含义或如何修复它。

stdin tty git-bash psql windows-10

6
推荐指数
1
解决办法
6981
查看次数

如何确定Linux TTY是否正在控制进程组

所以我有一个tty(让我们说/ dev/tty5)并且想要知道它当前是否是进程组或会话的控制tty,或者它是否当前是无主的.POSIX有两个API函数,它们在这里建议:tcgetpgrp()和tcgetsid(),这两个函数只有在调用者将tty作为控制tty的情况下才有效 - 在这种情况下,它们使得它们几乎无用(实际上我不是t看到tcgetsid()的重点.

任何人都有一个建议,我如何能够以一种理智的方式从C中检测终端当前是否是一个进程的控制终端?我只关心Linux,所以如果需要特定于Linux的API,那对我来说没问题.

c linux process tty

5
推荐指数
1
解决办法
3174
查看次数

与java持久的本地tty会话

我正在开发一个Web shell客户端,标签功能"代码完成",并有一个问题.任何人都知道打开本地tty持久连接的方法,我可以用一个会话执行多个命令,我不喜欢执行所有时间Runtime.getRuntime().exec("command"); 有什么建议吗?问候

java shell tty

5
推荐指数
1
解决办法
1880
查看次数

设置stty参数

我试图使用bash从ttyS0读取并需要设置以下但我努力想出来

databits = 7
stopbits = 2
parity = 0
flow control = 0
Run Code Online (Sandbox Code Playgroud)

继承我的代码:

#!/bin/bash

# Port setting
stty -F /dev/ttyS0 raw speed 1200

# Loop
while [ 1 ]; 
do
    echo 'LOADING...'
    READ=`dd if=/dev/ttyS0 count=1`
    echo $READ


echo '[PRESS Ctrl + C TO EXIT]'
done
Run Code Online (Sandbox Code Playgroud)

该脚本正在运行,但我需要设置参数.有什么建议?谢谢:)

linux bash serial-port tty stty

5
推荐指数
1
解决办法
2万
查看次数

与\ b字符相反的是什么,即一种非擦除空间?

根据\b我的理解,控制字符不应该删除前一个字符(这也将是\b一个del字符),所以这样的东西有效:

>>> print 'pototo\b\b\ba'
potato
Run Code Online (Sandbox Code Playgroud)

是否有一个向前移动的角色,就像一个非覆盖空间?预期的用法就像(我称之为这个角色\x):

>>> print 'pototo\r\x\x\xa'
potato
Run Code Online (Sandbox Code Playgroud)

显然,在打字机上,普通空间可以做到这一点.但是在一个终端上,一个空间会擦掉下面的字母.

我的用例是一个pexpect匹配的场景,我想追溯回去并用颜色装饰字符流输出的某些部分,我想知道是否需要在内存中保留整个当前行的缓存或不.

python string ascii character tty

5
推荐指数
1
解决办法
1298
查看次数

Terminfo smkx和应用程序光标键与应用程序键盘

XTerm控制序列指定以下键序列:

CSI ? 1 h  ? Application Cursor Keys (DECCKM)
CSI ? 1 l  ? Normal Cursor Mode (DECOM)
CSI ? 66 h ? Application keypad (DECNKM)
CSI ? 66 l ? Numeric keypad (DECNKM)
Run Code Online (Sandbox Code Playgroud)

TERMINFO源格式有如下条目:

Variable: keypad_xmit
Capname: smkx
Termcap: ks
Description: Put terminal in "keypad-transmit" mode
Run Code Online (Sandbox Code Playgroud)

但是xterm的terminfo实际上是说smkx=\E[?1h\E=,这似乎让我感到困惑(smkx应该影响键盘,而不是光标键,对吗?)。我在这里想念什么?

terminal xterm tty termcap terminfo

5
推荐指数
2
解决办法
2076
查看次数

/ dev/tty在nailgun-server终端中打开

给定一个打开的示例脚本/dev/tty:

# sample.rb
tty=File.open("/dev/tty", "w+")
tty.print "> "
tty.puts tty.gets.upcase
Run Code Online (Sandbox Code Playgroud)

我可以用正常的jruby运行它就好了:

% jruby sample.rb
> hello
HELLO
%
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用/dev/ttynailgun,那么tty绑定到nailgun服务器,而不是客户端:

# server terminal                                     | # client terminal
% jruby --ng-server                                   |
NGServer 0.9.1 started on all interfaces, port 2113.  |
                                                      | % jruby --ng sample.rb
> hello                                               |
HELLO                                                 |
                                                      | %
Run Code Online (Sandbox Code Playgroud)

(垂直间距是显示时间,每个实际输出缺少空行)

这是预期的行为,还是一个错误?

如果它是预期的行为,有没有办法我可以检测脚本是否正在运行,--ng所以我可以避免打开/dev/tty

jruby tty nailgun

5
推荐指数
1
解决办法
89
查看次数

Docker:执行一个需要tty的程序

我有一个取决于终端特性的实用程序.我想在docker容器中执行它.(该程序不是一个交互式程序.这是一个以这种方式编写的旧程序).

docker run -i -t或者docker exec -i -t应该打开容器进入容器.但这是发生了什么..

user@1755e1f3f735:~/region/primer/cobol_v> kickstop
[Error] Unable to run without terminal device (tty)
user@1755e1f3f735:~/region/primer/cobol_v> tty
not a tty
Run Code Online (Sandbox Code Playgroud)

当docker命令(run/exec)的-t选项给出'tty'时,tty命令返回'not a tty'.这令人费解.

我在openSuse和fedora23主机和图像上体验过这一点,如果这很重要的话.为此,我使用了'guake',MATE(Gnome?)终端仿真器,结果相同.

这有什么解决方案吗?或者这是设计并且必须替换/重写我的实用程序?

tty docker

5
推荐指数
1
解决办法
753
查看次数

听终端会话"关闭"事件

在终端中,我启动后台进程A,后者又启动进程B.进程B写入终端(进程A已经向B传递了正确的TTY文件描述符).

我担心的是,如果用户(在某些情况下,我)关闭终端窗口而不发送进程A或B一个SIGINT.然后可能发生的是,即使用户关闭了进程B,进程B仍将尝试写入终端.更糟糕的是,用户可以打开一个新的终端窗口,它可能会采用与另一个终端相同的身份/文件描述符,然后由进程B写入.

基本上,我正在寻找一种"监听"终端会话事件的方法,例如终端会话被关闭.

是否可以在Node.js进程中侦听此类事件?也许有一个相应的处理程序类似process.on('SIGINT')

我猜测也许SIGTERM事件是要听的事件,但现在在试验代码后,不要以为是这样.

terminal tty sigint node.js

5
推荐指数
1
解决办法
184
查看次数