1

以下のようなシェルコードrun.shがあります。

#!/bin/sh
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
export LD_LIBRARY_PATH="../../lib"


mp3proc=mp3proc
if [ ! -f "$mp3proc" ]; then
        ln -s mp3decode $mp3proc
fi

inputsonglist="$1"
intputflag="$2

cat $inputsonglist | while read line
do
    echo "$line"
    ./"mp3proc" ${line} $inputflag
done

ここで、inputsonglistは、以下のように処理される mp3 ファイル リストのフル パスを格納した txt ファイルです。

/home/user_01/music/wcbz.mp3
/home/user_01/music/wf_hh.mp3
/home/user_01/music/zj_lw.mp3
/home/user_01/music/zj_jjdzf.mp3
/home/user_01/music/zj_jsqsjywwd.mp3
/home/user_01/music/zj_sh.mp3
/home/user_01/music/zj_tbaw.mp3

mp3procは、2 つのパラメーターを受け入れる私の実行可能プログラムです。

  1. mp3 ファイルを見つける完全な mp3 パス

  2. フラグ、0 または 1

ただし、このシェル スクリプトを次のように実行すると、次のようになります。

./run.sh list.txt 0

次のエラーに遭遇しました:

/home/user_01/music/wcbz.mp3
./run.sh: line 27: 21068 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/wf_hh.mp3
./run.sh: line 27: 21069 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/zj_lw.mp3
./run.sh: line 27: 21070 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/zj_jjdzf.mp3
./run.sh: line 27: 21071 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/zj_jsqsjywwd.mp3
./run.sh: line 27: 21072 Segmentation fault      ./"mp3proc" ${line} $inputflag
/home/user_01/music/zj_sh.mp3
./run.sh: line 27: 21073 Segmentation fault      ./"mp3proc" ${line} $inputflag

ここで「セグメンテーション違反」が発生した理由がわかりません???!!!

誰か助けて?どうもありがとう!

4

1 に答える 1

2

1) 直接呼び出してみmp3procて、セグメンテーション違反かどうかを確認します。次に使用します:そしてstrace -f mp3proc その出力を見てください

2) LD_IBRARY_PATH を確認します。絶対パスに置き換えるか、変更します。

于 2013-01-07T10:40:51.013 に答える