Java和Python - 从子进程启动时,System.console()返回null

时间:2014-10-10 09:04:58

标签: java python console subprocess popen

我试图在Python的子进程中启动Java文件。问题是System.console()在Java中返回null,尽管我正在重定向std流。

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命令时,它可以正常工作。

我真的无法弄明白。我可以模拟一个控制台或类似的东西吗?

1 个答案:

答案 0 :(得分: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")

感谢您的帮助!

相关问题