TIOCSTI
是一个ioctl(在中进行了记录tty_ioctl(4)
),而不是终端设置,因此您不能使用tcsetattr()
-您需要将伪输入的每个字符输入ioctl()
。以前从未需要从Python进行过ioctl操作,但是以下操作似乎可以ls
在运行Bash 的其他终端(指定为参数,例如 / dev / pts / 13 )中运行:
import fcntl
import sys
import termios
with open(sys.argv[1], 'w') as fd:
for c in "ls\n":
fcntl.ioctl(fd, termios.TIOCSTI, c)
TIOCSTI``CAP_SYS_ADMIN
顺便要求root特权(或更具体地讲,但实际上通常是相同的)-请参阅capabilities(7)
。