whoコマンドっぽいやつ
30分プログラム、その350。whoコマンドっぽいやつ。
Unix/Linuxプログラミング理論と実践を読んでたら、whoコマンドを実装したくなった。ホントはErlangで実装してバイナリ構文すげー、ってやろうしたら処理系がインストールされてなかった。
なので、とりあえずC言語で実装してみた。
使い方
$ gcc mywho.c -Wall -o mywho $ ./mywho mzp console mzp ttys000 mzp ttys001 mzp ttys002 mzp ttys003 mzp ttys004 mzp ttys005 mzp ttys006 mzp ttys007 # 元のやつ $ who mzp console 8 18 20:04 mzp ttys000 8 18 23:57 mzp ttys001 8 18 20:05 mzp ttys002 8 18 20:05 mzp ttys003 8 18 20:15 mzp ttys004 8 18 23:48 mzp ttys006 8 18 23:37
ソースコード
#include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <utmpx.h> int main(int argc,char* argv[]){ int fd = open("/var/run/utmpx",O_RDONLY); struct utmpx utmpx; while(read(fd,&utmpx,sizeof utmpx) != 0){ printf("%s %s\n", utmpx.ut_user,utmpx.ut_line); } close(fd); return 0; }