我试图在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命令时,它可以正常工作。
我真的无法弄明白。我可以模拟一个控制台或类似的东西吗?
答案 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")
感谢您的帮助!