3

I am trying to write a C / Java program which will display list of devices attached to system. Any help in this regard is highly appreciated.

4

4 回答 4

1

lsusb命令将返回所有连接的 USB 设备(对于 Linux 内核 2.3.15 或更高版本)

如果您想直接从代码中调用 c 函数调用,这里有一些建议。

于 2013-08-10T11:21:39.350 回答
0

在 Linux 中,您可能最好通过迭代/sys/层次结构。据我所知,没有这样的系统调用。

于 2013-08-10T11:18:34.233 回答
0

我认为您的意思是列出系统上已安装的设备。如果您使用的是 Linux,则对文件 /proc/mounts 的基本读取(例如 fopen、c 中的 fscanf)会告诉您实时安装的设备。

你想写 C 或 java,所以这里有一个例子: C 代码:

#include <stdio.h>

int main()
{
    char *filename = "/proc/mounts";
    FILE *fp = fopen(filename, "r");
    char line[1000];
    char mountname[1000];
    while(!feof(fp)) {
        fgets(line, 1000, fp);
        sscanf(line, "%s", mountname);
        printf("%s\n", mountname);
    }
    return 0;
}
于 2013-08-10T11:22:41.443 回答
0

看一下lshw命令。

您可以通过 lshw 的输出并提取有关disktapestorage(存储控制器、scsi、sata、sas)和许多其他类中的设备的详细信息。

使用-short提供简洁摘要的选项。

例子

 sudo lshw -class storage -class disk -class tape -short

输出

H/W path              Device      Class       Description
==================================================================================
/0/100/4/0                        storage     JMB362 SATA Controller
/0/100/b/0            scsi1       storage     SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
/0/100/b/0/0.0.0      /dev/sdd    disk        1TB WDC WD10EARS-00Y

这是作为命令参数传递的可能类的列表:

address
bridge
bus
communication
disk
display
generic
input
memory
multimedia
network
power
printer
processor
storage
system
tape
volume

作为注释中的lshw手册页报告

lshw 必须以超级用户身份运行,否则它只会报告部分信息。

于 2013-08-10T11:23:06.763 回答