1 回答

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
通過使用 pty - 偽終端來實(shí)現(xiàn)您所描述的內(nèi)容的標(biāo)準(zhǔn)方法。pty 看起來與普通 tty 完全一樣,只是它是由軟件而不是實(shí)際終端或終端仿真器控制的。
在您的情況下,您可以輕松地使用pty
python 標(biāo)準(zhǔn)庫中的模塊,它提供了一些使用 pty 的實(shí)用程序。具體看pty.spawn()函數(shù):
生成一個(gè)進(jìn)程,并將其控制終端連接到當(dāng)前進(jìn)程的標(biāo)準(zhǔn) io. 這通常用于阻止堅(jiān)持從控制終端讀取的程序。預(yù)計(jì)在 pty 后面生成的進(jìn)程最終將終止,并且當(dāng)它確實(shí)生成時(shí)將返回。
用法示例:
import subprocess, sys
openssl_cmd = ['openssl', 'foo', 'bar']
p = subprocess.Popen([sys.executable, '-c', 'import pty, sys; pty.spawn(sys.argv[1:])', *openssl_cmd])
p.stdin.write('password\n')
print(p.wait())
在這個(gè)例子中,我們沒有直接運(yùn)行 openssl,而是使用 運(yùn)行它spawn
,這意味著無論我們寫入進(jìn)程的標(biāo)準(zhǔn)輸入,openssl 都會(huì)從它的/dev/tty
.
添加回答
舉報(bào)