root partition 찾기...어떻게 하세요?

hyper9의 이미지


제 linux machine상에는 sda1, sda2, sda3와 같이 3개의 partition이 존재하고,
그 중에 sda1이 / partition으로 mount되어 있습니다.

C program으로 현재 / partition으로 mount되어 있는 device의 이름을 찾아내려면
어떻게 하시는지 질문드리고 싶어서 글을 올립니다.

자꾸 무식한 방법만 생각이나서요 ..
예를 들어 C program에서 /etc/mtab을 읽어서 parsing을 한다거나
fdisk의 출력을 parsing해서 device이름을 찾아낸다거나...
그런 방법만 생각이나네요

분명히 더 좋은 방법이 많이 있을 것 같아서 질문드립니다.
조언 부탁드릴게요 ^^ ~

feanor의 이미지

결국은 /etc/mtab을 읽어야 합니다. 다만 직접 파싱하는 대신 getmntent 함수를 쓸 수 있습니다.

#include <stdio.h>
#include <mntent.h>
 
int main() {
    FILE *fp;
    struct mntent *ent;
    fp = fopen("/etc/mtab", "r");
    while (1) {
        ent = getmntent(fp);
        if (ent == NULL) break;
        if (!strcmp(ent->mnt_dir, "/")) puts(ent->mnt_fsname);
    }
    return 0;
}
hyper9의 이미지

좋은 도움 감사합니다. ^^