进程被阻止时如何获取命令行流?

时间:2013-09-26 19:17:49

标签: java python

我有一个启动Python进程的Java应用程序。 Python进程打开一个套接字并侦听发送给它的传入数据。 Python将在我的Java应用程序需要能够读取的整个生命周期中对屏幕进行打印。我的Java代码如下:

Runtime runTime = Runtime.getRuntime();
Process proc = runTime.exec(command, null, dir);
reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while ((line = reader.readLine()) != null) 
{
    System.out.println(line);
}

这对我来说很有用,但是一旦我的Python套接字监听,我就不再接收输入流了。如下所示,当我在Python脚本中注释掉我的接收时,我的Java应用程序将接收两个打印。

print "socket waiting to receive"
#data, addr = sock.recvfrom(self.BUFFER_SIZE) # this line causing problems
print "socket received data"

如果我取消注释接收,我不再在Java中获得任何打印。我甚至没有得到阻塞recvfrom语句之前发生的打印。如果我直接从命令行运行脚本,我仍然会收到“套接字等待接收”,并且每当我收到数据时都会打印“套接字接收数据”。

0 个答案:

没有答案