Java 可以通過 Runtime 調用Linux命令,形式如下:
創(chuàng)新互聯(lián)建站云計算的互聯(lián)網(wǎng)服務提供商,擁有超過13年的服務器租用、溫江服務器托管、云服務器、網(wǎng)頁空間、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗,已先后獲得國家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務許可證。專業(yè)提供云主機、網(wǎng)頁空間、空間域名、VPS主機、云服務器、香港云服務器、免備案服務器等。
Runtime.getRuntime().exec(command)
但是這樣執(zhí)行時沒有任何輸出,因為調用 Runtime.exec 方法將產(chǎn)生一個本地的進程,并返回一個Process子類的實例(注意:Runtime.getRuntime().exec(command)返回的是一個Process類的實例)該實例可用于控制進程或取得進程的相關信息。
由于調用 Runtime.exec 方法所創(chuàng)建的子進程沒有自己的終端或控制臺,因此該子進程的標準IO(如stdin,stdou,stderr)都通過 Process.getOutputStream(),Process.getInputStream(), Process.getErrorStream() 方法重定向給它的父進程了。
用戶需要用這些stream來向子進程輸入數(shù)據(jù)或獲取子進程的輸出,下面的代碼可以取到 linux 命令的執(zhí)行結果:
try {
String[] cmd = new String[]{”/bin/sh”, “-c”, ” ls “};
Process ps = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append(”\n”);
}
String result = sb.toString();
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
具體步驟如下:
1、首先我們在命令行運行程序需要借助jdk的環(huán)境依賴,打開jdk包。
2、接下來我們需要打開運行窗口,然后在運行窗口中輸入cmd命令,如下圖所示
3、在CMD命令行界面中我們輸入cd命令進入到程序文件所在的目錄,如下圖所示
4、接下來執(zhí)行命令對程序文件進行編譯,如下圖所示
5、編譯完畢以后我們會在文件夾下面看到一個class文件,這個就是虛擬機編譯完產(chǎn)生的文件,如下圖所示
6、完成上述步驟后,即可在linux命令行中執(zhí)行應用程序。
常有很多命令可以通過串口終端輸入,得到結果,在程序中,通常我們需要得到某些命令的結果,在代碼中執(zhí)行命令,并將結果返回。
有兩個類:CommandHelper.java和CommandResult.java 第一個類用于處理命令,第二個則用于返回一個結果
package com.example.task_aidl;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CommandHelper {
//default time out, in millseconds
public static int DEFAULT_TIMEOUT;
public static final int DEFAULT_INTERVAL = 1000;
public static long START;
public static CommandResult exec(String command) throws IOException, InterruptedException {
Process process = Runtime.getRuntime().exec(command);//創(chuàng)建一個字進程,并保存在process對象中
CommandResult commandResult = wait(process);
你想問得是php如何執(zhí)行shell命令把?\x0d\x0a\x0d\x0a可以用system(),exec(),passthru()這三個函數(shù)實現(xiàn)\x0d\x0a雖然這三個命令都能執(zhí)行l(wèi)inux系統(tǒng)的shell命令,但是其實他們是有區(qū)別的:\x0d\x0a system() 輸出并返回最后一行shell結果。\x0d\x0a exec() 不輸出結果,返回最后一行shell結果,所有結果可以保存到一個返回的數(shù)組里面。\x0d\x0a passthru() 只調用命令,把命令的運行結果原樣地直接輸出到標準輸出設備上。\x0d\x0a 相同點:都可以獲得命令執(zhí)行的狀態(tài)碼\x0d\x0a例子:system("ls -al");\x0d\x0a【使用之前要在php.ini中把safe_mode關閉】