我正在尝试将Windows应用程序作为Windows 7下的衍生子进程运行。
我正在使用的命令是:java -cp ...list of libs...
问题是,一旦应用程序加载,它就没有自己的stdin流但是尝试使用它的父stdin,这导致命令无法传递给它。
是否有任何'java.exe'参数可以解决这种行为,所以子进程将拥有自己的stdin?
感谢
更新 对不起,我不是一个java程序员,但这可能是因为我正在运行的java应用程序中的这一行:
this(new IO(System.in, System.out, System.err), STANDARD_INPUT_PROMPT, STANDARD_RESULT_PROMPT);
如果是,那么System.in
的适当替代是什么?
答案 0 :(得分:0)
为什么不启动一个生成子进程的新命令提示符?我没有为Windows环境编写太多程序,但我有以下工作:
public class Main {
public static void main(String [] args) {
try {
Runtime.getRuntime().exec("cmd /k start cmd /k echo hello");
} catch (Throwable t) {
t.printStackTrace();
}
}
}
如果用你的子进程程序替换echo并用必要的参数替换你好,那么你应该全部设置为接收stdin。换句话说:
Runtime.getRuntime().exec("cmd /k start cmd /k java -cp ...list of libs...");
顺便说一句,可能有一种更漂亮的方法。