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

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

我实在想不通。我可以模拟控制台或类似的东西吗?

最佳答案

最后我用pty做了一个伪终端。

这次是 ruby :

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")

感谢您的帮助!

关于Java 和 Python - 从子进程启动时 System.console() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26295701/

相关文章:

java - 模糊你的 Ruby 代码?

java - java中作业完成后返回主函数

python - SQLAlchemy FK ondelete 不限制

python - Cython 的 C++ API 声明失败

python - 下载特定网址的 flickr 图片

java - 保护 Java Web 应用程序

java - 禁用 Android Switch 的默认点击操作

c# - 如何知道进程崩溃了

c++ - WinApi LineTo 不刷新行

c# - 有没有办法删除刚刚使用 Console.WriteLine 写入的字符?