91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

贞丰县| 富民县| 武宣县| 遂昌县| 凯里市| 团风县| 林芝县| 于田县| 甘泉县| 龙口市| 陵水| 洪湖市| 高邑县| 手机| 佛冈县| 东乌| 富阳市| 揭西县| 乌海市| 获嘉县| 探索| 呼玛县| 林州市| 青神县| 西乡县| 南郑县| 留坝县| 渭南市| 梅州市| 天门市| 昔阳县| 五家渠市| 万源市| 蕲春县| 柳林县| 鄂温| 威远县| 金门县| 富川| 晋江市| 陇南市|