내 Linux C++ 응용 프로그램에서 시스템에있는 모든 SCSI 디스크의 이름을 가져 오려고합니다. 예 :/dev/sda,/dev/sdb, ... 등등.Linux C++ 응용 프로그램에서 SCSI 디스크 이름을 가져 오는 방법
은 현재 내가 코드 아래 사용하여 파일/PROC/SCSI/SG/장치의 출력에서 무엇입니까 :
host chan SCSI id lun type opens qdepth busy online 0 0 0 0 0 1 128 0 1 1 0 0 0 0 1 128 0 1 1 0 0 1 0 1 128 0 1 1 0 0 2 0 1 128 0 1
// If SCSI device Id is > 26 then the corresponding device name is like /dev/sdaa or /dev/sdab etc.
if (MAX_ENG_ALPHABETS <= scsiId)
{
// Device name order is: aa, ab, ..., az, ba, bb, ..., bz, ..., zy, zz.
deviceName.append(1, 'a'+ (char)(index/MAX_ENG_ALPHABETS) - 1);
deviceName.append(1, 'a'+ (char)(index % MAX_ENG_ALPHABETS));
}
// If SCSI device Id is < 26 then the corresponding device name is liek /dev/sda or /dev/sdb etc.
else
{
deviceName.append(1, 'a'+ index);
}
그러나이 파일은/proc/SCSI/SG는/디바이스는 또한 정보가 포함되어 있습니다 이전에 시스템에 있던 디스크에 대해 예 : 시스템에서 디스크 (LUN)/dev/sdc를 분리하면 파일/proc/scsi/sg/devices에/dev/sdc 정보가 여전히 유효하지 않습니다.
SCSI 디스크 이름을 가져 오는 다른 방법이 있습니까? 시스템 콜처럼?
감사
아마도'/ proc' 또는'/ sys'를 거쳐야 할 것입니다. –