Javaプログラムから、指定したフォルダから入力を読み取り、gcovデータを生成するスクリプトを実行したい。このスクリプトはgcovデータの一部を正しく生成しますが、私のjavaプログラムを明示的に終了するまで残りのデータを生成することはできません。その後、期待どおりに仕事を完了します。スクリプトここ子プロセスと親プロセスの間でデッドロック状態が発生する
try {
Process proc = Runtime.getRuntime().exec("/bin/bash CovSeq.sh");
proc.waitFor();
System.out.println("Generated gcov Data");
} catch(Exception e) {
System.err.println("Error: "+e.getMessage());
}
されています:ここで
は、スクリプトを起動するコードであるあなたは、Javaから子プロセスを生成するとき#!/bin/bash
lines=($(cat path))
mkdir output
mkdir gcovOut
rm -f -r ./gcovOut/*
rm -f -r ./output/*
gcc -g -o temp_exec -fprofile-arcs -ftest-coverage ${lines[0]}
path1=`pwd`
cd ${lines[1]}
for i in `ls *`
do
cd $path1
./temp_exec < ${lines[1]}/$i > ./output/$i
gcov -b -c ${lines[0]}
mkdir ./gcovOut/$i
mv *.gcov ./gcovOut/$i
mv *.gcda ./gcovOut/$i
cd ${lines[1]}
done
bufferreaderは私を助けます....問題解決... ....ありがとう – ankur