亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA如何調用Shell腳本

發布時間:2020-09-27 17:47:24 來源:腳本之家 閱讀:311 作者:sunshine_kaka 欄目:編程語言

在實際項目中,Java有時候需要調用C寫出來的東西,除了JNI以外,我認為一種比較好的方法是JAVA調用Shell。先把C寫出來的make成可執行文件,然后再寫一個shell腳本執行該可執行文件,最后是JAVA調用該shell腳本。

JAVA調用很簡單,例子如下:

首先是shell腳本

#!/bin/sh 
echo Begin word cluster 
/home/felven/word2vec/word2vec -train /home/felven/word2vec/resultbig.txt -output /home/felven/word2vec/classes.csv -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 2000 
echo The word classes were saved to file classes.csv 

然后是JAVA調用代碼

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
 
public class RunShell { 
  public static void main(String[] args){ 
    try { 
      String shpath="/home/felven/word2vec/demo-classes.sh"; 
      Process ps = Runtime.getRuntime().exec(shpath); 
      ps.waitFor(); 
 
      BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream())); 
      StringBuffer sb = new StringBuffer(); 
      String line; 
      while ((line = brreadLine()) != null) { 
        sb.append(line).append("\n"); 
      } 
      String result = sbtoString(); 
      System.out.println(result); 
      }  
    catch (Exception e) { 
      e.printStackTrace(); 
      } 
  } 
} 

其實就是一個Process類進行調用,然后把shell的執行結果輸出到控制臺下。

需要注意的是,在調用時需要執行waitFor()函數,因為shell進程是JAVA進程的子進程,JAVA作為父進程需要等待子進程執行完畢。

另外在eclipse控制臺輸出時并不是邊執行邊輸出,而是shell全部執行完畢后輸出,所以如果執行較為復雜的shell腳本看到沒有輸出時可能會誤以為沒有執行,這個時候看看終端里面的進程,TOP命令一下就能看到其實shell腳本已經開始執行了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

望城县| 保定市| 铜川市| 南开区| 渭源县| 开平市| 陈巴尔虎旗| 盘锦市| 米易县| 武川县| 道孚县| 青冈县| 台江县| 五大连池市| 宁陕县| 建阳市| 南平市| 南川市| 嘉黎县| 察雅县| 延安市| 桂东县| 天等县| 禹州市| 岳西县| 抚顺市| 马公市| 类乌齐县| 原阳县| 嘉禾县| 阳信县| 余姚市| 浮梁县| 专栏| 洛宁县| 黄骅市| 渝中区| 越西县| 门头沟区| 松阳县| 兴业县|