Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在python中如何处理等待输入信号?_Java_Python - Fatal编程技术网

Java 在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

我有一个python代码,其中包含一些输入:

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不可用)。那么你在寻找特定的信号吗?或者在读取之前等待输入?或者在读取完成后执行一些操作(您根本不需要涉及信号)。