3

カーネルによって正しく初期化される Zigbee RF4CE 用のデバイス ドライバーがあります。ただし、ユーザー空間アプリケーションがデバイスを開こうとすると、次のエラーが表示されます: エラー: デバイスを開くことができませんでした: そのようなファイルまたはディレクトリはありません

/dev フォルダーで ls を実行すると、デバイス名が疑問符「?」で終わることが示されます。

ノードを作成するために使用しているスクリプト ファイルのデバイス名に特殊文字が明示的に追加されていない場合に、なぜそうなるのか知りたいです。

スクリプトの一部を次に示します。

DEVICE_INPUT_MAJOR=`grep device-input /proc/devices | sed 's/^ *\([0-9]*\) .*$/\1/'`

if [ "$EUID" != "0" ] || [ "$1" == "-t" ] ; then
    if [ "$EUID" != "0" ] ; then
        echo
        echo "You need to be root to create the nodes."
        echo
    fi
    echo "Here is what would be done:"
    ECHO=echo
else
    ECHO=
fi

function create_if()
{
    name=$1
    major=$2
    minor=$3

    #echo $name $major $minor
    if [ "$major" != "" ] ; then

        $ECHO mknod $name c $major $minor

        echo -e $major "\t" $minor "\t" $name

    else
        echo -e "--- \t\t" $name
    fi
}

create_if $BASE_DIR/$MY_DEVICE_DIR/$MY_DEVICE "$DEVICE_INPUT_MAJOR" 0

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

考えられる原因の 1 つは、スクリプト内の印刷できない文字です。これは、スクリプトが Windows を使用して記述されている (または Windows からコピーされている) 場合によく発生し、Unix/Linux 環境で実行されます。

印刷できない文字を表示するエディターでスクリプトを確認できます。

于 2016-11-03T12:30:06.417 に答える