哪个系统调用返回Linux中附加到系统的设备列表?

时间:2013-08-10 11:14:24

标签: java c linux

我正在尝试编写一个C / Java程序,它将显示连接到系统的设备列表。在这方面的任何帮助都非常感谢。

4 个答案:

答案 0 :(得分:1)

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

如果你想直接从你的代码中调用c函数调用,那么

有一些建议here

答案 1 :(得分:0)

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

答案 2 :(得分: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;
}

答案 3 :(得分: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

在Notes

中作为lshw手册页报告
  

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