Sejak stat
mengembalikan bidang "Perangkat", saya ingin tahu bagaimana stat()
panggilan pustaka yang mendasarinya dapat digunakan untuk mendapatkan informasi ini secara terprogram dengan cara yang sesuai dengan POSIX.
Potongan kode C ini:
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
int main (int argc, const char *argv[]) {
struct stat info;
stat(argv[1], &info);
printf("min: %d maj: %d\n",
minor(info.st_dev),
major(info.st_dev)
);
return 0;
}
Akan memberikan ID perangkat utama dan kecil untuk perangkat yang berisi file yang tercantum pada baris perintah ( argv[1]
). Sayangnya, major()
dan minor()
bukan POSIX, meskipun halaman manual mengklaim mereka "ada di banyak sistem lain" selain GNU / linux.
Anda kemudian bisa mendapatkan korespondensi antara nomor utama / kecil perangkat dan simpul perangkat dari, mis. /proc/diskstats
, Dan memetakan tempat untuk me-mount poin /proc/mounts
, alias. /etc/mtab
.
Jadi utilitas baris perintah untuk melakukan ini akan sangat sederhana.
tr
membatalkan panggilan terakhir dengan menggunakanawk -F'% '...