【问题标题】:Shell coding met segmentation faultShell 编码遇到分段错误
【发布时间】:2013-01-07 10:32:03
【问题描述】:

我有一段 shell 代码 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是一个txt文件,其中存储了要处理的mp3文件列表的完整路径,如下所示:

/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 是我的可执行程序,它接受两个参数:

  1. 定位 mp3 文件的完整 mp3 路径

  2. 标志,0 或 1

但是,当我像这样运行这个 shell 脚本时:

./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

不知道为什么这里会出现“Segmentation fault”???!!!

有人帮忙吗?非常感谢!

【问题讨论】:

  • 你有 intputflag 和 inputflag。
  • 很明显,您的mp3proc 有问题。你试过调试它吗?如果您显示它的代码,我们可以提供帮助(那么这将是一个 C 或 C++ 问题,请相应地重新标记)。

标签: linux shell segmentation-fault


【解决方案1】:

1) 尝试直接调用mp3proc,看看是否有段错误。然后使用:strace -f mp3proc 并查看其输出

2)检查LD_IBRARY_PATH:替换为绝对路径,或修改

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多