【问题标题】:Linux - Device node name ends with '?' What does this mean?Linux - 设备节点名称以“?”结尾这是什么意思?
【发布时间】:2023-03-23 08:40:02
【问题描述】:

我有一个由内核正确初始化的 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

我该如何解决这个问题?

【问题讨论】:

  • 也许你想展示脚本?
  • 添加的部分脚本。

标签: linux-device-driver device-node


【解决方案1】:

一个可能的原因是脚本中的不可打印字符。当脚本使用(或从)Windows 编写并在 Unix/Linux 环境中执行时,通常会发生这种情况。

您可以使用显示不可打印字符的编辑器检查您的脚本。

【讨论】:

  • 是的,我在 Notepad++ 中编辑文件时确实看到了一些不可打印的字符。这似乎是一个不受欢迎的 CR。删除,解决了问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 2010-11-21
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
相关资源
最近更新 更多