2014-10-10 34 views
1

我試圖在Python中的子進程中啓動Java文件。問題是System.console()在Java中返回null,儘管我重定向了std流。Java和Python - System.console()從子進程啓動時返回空值

server_startcmd = [ 
      "java", 
      "-Xmx%s" % self.java_heapmax, 
      "-Xms%s" % self.java_heapmin, 
      "-jar", 
      self.server_jar, 
      self.java_gui, 
    ] 

    self.server = Popen(
      server_startcmd, 
      stdout = PIPE, 
      stderr = PIPE, 
      stdin = PIPE 
    ) 

    self.outputs = [ 
      self.server_socket, 
      self.server.stderr, 
      self.server.stdout, 
      sys.stdin 
    ] 

當我從命令行執行Java命令時,它工作正常。我真的搞不清楚。我可以模擬一個控制檯或類似的東西嗎?

+0

你可以嘗試寫server_startcmd作爲一個字符串,但不是一個列表? – 2014-10-10 09:08:12

+0

謝謝,但沒有,不起作用。 – hansottowirtz 2014-10-10 09:11:08

回答

1

最後,我用pty做了一個僞終端。

這次在紅寶石:

require 'pty' 

@master_io, slave = PTY.open 
read, @write_pipe = IO.pipe 
pid = spawn(server_startcmd, :in=>read, :out=>slave) 

read.close 
slave.close 

output = @master_io.gets 
@write_pipe.write("something") 

感謝儘管幫助!