我socat
通过执行来启动终端socat - UNIX-listen:/tmp/sock
然后我去另一个终端并以这样的方式启动程序(通过python),它似乎在第一个终端中运行,这是一个例子:
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect("/tmp/sock")
proc=subprocess.Popen(['prg'], stdin=s, stdout=s, stderr=s, shell=False)
proc.wait()
像“cat”这样简单输入/输出的程序工作正常,但更复杂的程序(如“vim”或“bash”)显然不是很高兴。除此之外,当我点击Cntrl-C
第一个终端时,它socat
被杀死,而我更喜欢将键盘中断传递给prg
程序(在上面的python代码中启动)。
我的问题是:如果可能,以及如何告诉它socat
表现得像prg
终端所有者而不是socat
自己。
PS。它可能会出现这个问题是一个重复的这一个,但它并非如此,因为在这一问题的prg
直接被称为socat
,所以它是可以使用EXEC
的选项。