1. exec(String command)
2. exec(String command, String envp[], File dir)
3. exec(String cmd, String envp[])
4. exec(String cmdarray[])
5. exec(String cmdarray[], String envp[])
6. exec(String cmdarray[], String envp[], File dir)
一般的应用程序可以直接使用第一版本,当有环境变量传递的时候使用后面的版本。其中2和6版本可以传递一个目录,标识当前目录,因为有些程序是使用相对目录的,所以就要使用这个版本。
实例:
Process process = Runtime.getRuntime().exec(".\\p.exe")
process.waitfor()
在上面的程序中,第一行的“.\\p.exe”是要执行的程序名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待子进程完成再往下执行。
import java.util.Scannerimport java.util.Arrays
public class P
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in)
float[] A=new float[1],B=new float[1]
int alen=0,blen=0,i,j,k
String line
System.out.println("请输入线性表A的各元素,每行一个(输入#结束):")
while(true)
{
line=sc.nextLine()
if(line.equals("#"))
break
A=Arrays.copyOf(A,++alen)
A[alen-1]=Float.parseFloat(line)
}
System.out.println("请输入线性表B的各元素,每行一个(输入#结束):")
while(true)
{
line=sc.nextLine()
if(line.equals("#"))
break
B=Arrays.copyOf(B,++blen)
B[blen-1]=Float.parseFloat(line)
}
Arrays.sort(A)
Arrays.sort(B)
System.out.println("升序排序后,线性表A的各元素是:")
for(i=0i<aleni++)
{
System.out.print(A[i]+" ")
}
System.out.println()
System.out.println()
System.out.println("升序排序后,线性表B的各元素是:")
for(i=0i<bleni++)
{
System.out.print(B[i]+" ")
}
System.out.println()
System.out.println()
A=Arrays.copyOf(A,alen+blen)
for(i=0i<bleni++)
{
if(B[i]>=A[alen-1])
A[alen++]=B[i]
else
{
for(j=0j<alen-1j++)
{
if(B[i]<=A[j])
break
}
for(k=alen-1k>=jk--)
{
A[k+1]=A[k]
}
A[j]=B[i]
alen++
}
}
System.out.println("线性表B按顺序插入线性表A中后,线性表A的各元素是:")
for(i=0i<aleni++)
{
System.out.print(A[i]+" ")
}
sc.close()
}
}