我要执行一个发命令的程序 现在只能发一条 command中部分参数的是变动的.
如果我想发多条怎么办呢? 用循环发吗? 那不是每次都要创建一个进程
能不能创建线程来发呢,? 一个线程能不能执行一个程序呢?
大家帮我想想 举一个列子最好 。
比如 String command = "cmd /E:ON /c start SMS.exe"+"...."; 
"......" 是变动的参数
小弟好急在线等待.......
Runtime run = Runtime.getRuntime();
Process process = run.exec("command");还有我发送数据以后要判断是否发送成功怎么办呢?
我现在的做法是让运行的那个程序返回一条数据到数据库 然后查看数据库30秒内有不有返回值
这样我觉得不好,有不有更好的方法?

解决方案 »

  1.   

    建议你看一下:java.lang.ProcessBuilder 这个类。
      

  2.   

    不需要每次都创建一个进程,如果这样,你机子very easy dead!
       一个线程当然可以执行一个程序.你把你发命令的代码放在线程里的一个死循环里就行了,也就是whlie(true){}里面.
           判断数据发送以后是否成功,用一条打印语句就OK了.
      

  3.   

    变动的参数  当方法的参数  执行返回一个数
    当返回-1时  执行失败
    当返回0时  执行成功
       public int  run(String a){
           int b=-1;
              .................
             return b;
    }
      

  4.   

     怎么解决呀 能不能贴代码上来?
     run.exec("command"); //执行一个应用程序但是是一个进程
     用多线程怎么写啊? 
      

  5.   

    可以获取process的输入输出流,然后……
      

  6.   

    你发短信的程序不是自己写的吧,没戏,虽然java是线程级别的,但是每执行一次SMS.exe必然创建一个进程(我记得是这样的,本次回答没做test),唯一的办法是改SMS.exe。
      

  7.   

    改成jni调用才行,将sms.exe改为dll
      

  8.   

    SMS.exe返回一个标识值, 标识是否成功用Process类中的abstract public int waitFor() throws InterruptedException;
    取进程返回的结果
    Runtime run = Runtime.getRuntime(); 
    Process process = run.exec("command"); 
    int ret = process.waitFor();
    if (ret == 0) {
      System.out.println("成功");
    } else {
      System.out.println("失败");
    }