如何使用C程序查找可移动设备的序列号

问题描述 投票:-1回答:1

我正在使用bash脚本来获取可移动设备(如笔驱动器)的序列号,用于我的另一个应用程序。有人可以将此bash转换为C吗?

#!/bin/bash
for C in `ls /sys/block/`; do 
    RE=`cat /sys/block/$C/removable`
        if [ $RE == "1" ] ;then 
            #VENDOR=`/bin/udevadm info --name=/dev/$C | grep ID_VENDOR=|awk -F"=" ' { print $2}'`
            #MODEL=`/bin/udevadm info --name=/dev/$C | grep ID_MODEL=|awk -F"=" ' { print $2}'`
            #SERIAL=`/bin/udevadm info --name=/dev/$C | grep SERIAL_SHORT|awk -F"=" ' { print $2}'`
            #echo $VENDOR-$MODEL"-"$SERIAL #print as per your taste
            USB_SERIAL=`/bin/udevadm info --name=/dev/$C | grep ID_SERIAL=|awk -F"=" ' { print $2}'|awk -F"-" ' { print $1}'`
            echo  $USB_SERIAL #or just the default one
        fi 
done

我不想使用系统调用。需要纯C程序

我正在使用bash脚本来获取可移动设备(如笔驱动器)的序列号,用于我的另一个应用程序。有人可以将此bash转换为C吗?#!/ bin / ...

c linux usb usb-drive
1个回答
0
投票

这里的主要挑战是,由于您不想使用system(),因此要模拟udevadm info的工作。下面的程序(至少在我的系统上)通过从/run/udev/data/bMAJOR:MINOR读取信息来执行此操作,其中MAJOR

© www.soinside.com 2019 - 2024. All rights reserved.