我想在java中编写一个管理器程序,它将执行一个c程序并可以读取它的输入流并写入输出流。
客户端将请求c exe,然后服务器将处理它的请求,如下所示:
我尝试使用Runtime和Process执行c代码。但它给出了异常
---------------------------
16 bit MS-DOS Subsystem
---------------------------
Error while setting up environment for the application. Choose 'Close' to terminate the application.
---------------------------
Close
---------------------------
帮助?
代码: import java.io。*;
class Dev
{
public static void main(String args[])
{
try
{
Process p = Runtime.getRuntime().exec("dev.exe");
InputStream is = p.getInputStream();
// from her i'll do the stuff but it gives error.
}
catch(Exception e)
{
System.out.print("\n\n\t Error : "+e);
}
}
}
答案 0 :(得分:1)
您可以通过创建实现Runnable
的类来执行程序,然后将Process
传递给InputStream
,this answer中对此进行了描述。那里的答案还描述了如何在Process
中获得流程的输出。至于传入一些输入,这可以通过在命令行中管道一个字符串来完成。在该答案的//...
String someInput, command; // Set these to the appropriate values.
Process p = Runtime.getRuntime().exec("echo \"" + someInput + "\"|" + command);
//...
- 制作行中,您可以添加:
someInput
这会将command
的值传递给{{1}}。这基于命令行,在技术上是特定于平台的,但在Linux,OS X和Windows上无需更改即可使用。