Java 在python中如何处理等待输入信号?
我有一个python代码,其中包含一些输入:Java 在python中如何处理等待输入信号?,java,python,Java,Python,我有一个python代码,其中包含一些输入: a = input("first input:") b = input("second input:") 我从java运行它: Process process = new ProcessBuilder("python3", scriptPath).start(); 但是从python运行也适合我 当python进程等待输入并以某种方式处理它时,是否可以捕获它的信号?例如,在第一次输入时,我想将一些文本写入process.getOutputStre
a = input("first input:")
b = input("second input:")
我从java运行它:
Process process = new ProcessBuilder("python3", scriptPath).start();
但是从python运行也适合我
当python进程等待输入并以某种方式处理它时,是否可以捕获它的信号?例如,在第一次输入时,我想将一些文本写入process.getOutputStream()
,在第二次输入时,我想终止进程
我发现终端输入有SIGTTIN信号。我试着用python来做:
def interrupted(signum, frame):
exit()
signal.signal(signal.SIGTTIN, interrupted)
a = input()
但是没有成功。我没有找到解决我所问问题的办法。但是我通过自己替换
input
函数来解决最初的问题
__builtins__.input = myfunc
“没有成功”是什么意思?请说得更具体些。你正在使用哪个操作系统?操作系统处理信号的方式有一些细微的差别。顺便说一句,不要在脚本中使用
exit
,它只在交互式解释器中使用,并且它可能在脚本中行为异常,甚至不存在。相反,请使用sys.exit
,或raisesystemexit
。我使用的是macOS High Sierra,python 3.7。我尝试了sys.exit
,但也不起作用。输入未中断,函数中断
未调用。您到底想要什么?我已经尝试了您的代码并发送了侦听进程SIGTTIN
,处理程序按预期启动(如果您在后台运行脚本,它也将退出,因为SIGTTIN
是终端作业控制的一部分,以让进程知道其stdin不可用)。那么你在寻找特定的信号吗?或者在读取之前等待输入?或者在读取完成后执行一些操作(您根本不需要涉及信号)。