星期五, 4月 18, 2008

utmpx

在大部分的linux下,是可以從"/var/run/utmp" 這個路徑得知現在使用這台伺服器的使用者資訊,資訊是開放任何人可讀,不過在Mac OS 10.5以後不支援這個檔案,而改採用NetBSD的utmpx,故資訊可從"/var/run/utmpx"這個檔案讀到。寫了一小段測試碼如下

#include <stdio.h>
#include <utmpx.h>
int main(){
struct utmpx utmpx_entry;
FILE* fp = fopen("/var/run/utmpx", "r");
while(fread(&utmpx_entry, sizeof(struct utmpx), 1, fp)>0){
printf("%s\t%s\t%s\n", utmpx_entry.ut_user, utmpx_entry.ut_id, utmpx_entry.ut_line);
}
return 0;
}

事實上我覺得使用起來沒什麼差別,不過細細比較utmp.h和utmpx.h之後,會發現struct utmpx記載了更多資訊,可能更符合現在的作業系統設計,畢竟現在的作業系統不是只有單純的command line了,而一個xwindow也是一個terminal,所以我覺得新增這些資訊還算蠻合理的。

---
事實上這篇重要性不大XD

張貼留言