java - ProcessBuilder未读取执行文件

标签 java process processbuilder

下面的c程序有两个参数a,b,如果与用户输入匹配,则打印值。我尝试在 Java ProcessBuilder 中运行 c 执行文件,但它不读取执行文件。

Java代码

import java.io.*;
import java.lang.Runtime;
import java.lang.*;
import java.io.File;
import java.lang.ProcessBuilder;
public class arg
{
 public static void main(String[] args)
 {
  try
  {
   ProcessBuilder pb = new ProcessBuilder("path","-args[1]", "-args[2]");
   pb.redirectErrorStream(true); 
   Process p = pb.start();
   String s;
   BufferedReader stdInput = new BufferedReader(new 
                                           InputStreamReader(p.getInputStream()));
   BufferedReader stdError = new BufferedReader(new 
                                           InputStreamReader(p.getErrorStream()));
   OutputStream stdOutput =   p.getOutputStream();                      
   stdOutput.close();
   while ((s = stdInput.readLine()) != null)
   { System.out.println(s);    }    
     System.out.println("Done.");
     stdInput.close();              
  }//try
  catch (IOException ex) { ex.printStackTrace();    }
    } //void
  } //main

c代码

   #include <stdio.h>
   #include <sys/timeb.h>
   #include <string.h>
   main(int argc, char **argv)
   {
   setbuf(stdout, NULL);
   int i=1,j,n;
   char a,b;
   for (i=0; i<argc; i++)   
   { printf("%s\n", argv[i]); }

     if(!strcmp(argv[1],"a"))
     {
       if(!strcmp(argv[2], "b"))
       {    
       for( j = 0; j<= 4; j++ ) 
        { printf("Iteration[%d] %d\n",j, j); }
       }
       return 0 ;
    }
   } //main

最佳答案

我不清楚你想要做什么,但如果你想从java命令行传递ProcessBuilder参数,那么你需要这样做

ProcessBuilder pb = new ProcessBuilder("path", args[0], args[1]); // Note, index starts with 0

按照您的方式,您将实际的字符串 "arg[1]""arg[2]" 发送到您的命令。

关于java - ProcessBuilder未读取执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16582727/

相关文章:

java - 使布局不可点击但子元素可点击

c - 进程地址空间中的 Linux 变量存储 - C

java - 如何使用 Java 中文本字段的用户输入运行 .sh 脚本?

java ProcessBuilder 不起作用

Java Servlet - 如何同步 ProcessBuilder?

java - 如何使用 Spring Integration 发送 gcm xmpp 消息?

Java单例-空静态变量(无法解释)

android - 终止服务后通知仍在栏中

java - 需要在java中根据名称排序列表

process - 有没有办法将同一进程的不同实例分配给不同的camunda实例(工作站)?