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



