#include #include void show_info(struct utmp * current_record) { if (current_record->ut_type==USER_PROCESS) { char * s=ctime(¤t_record->ut_time)+4; /*start at month*/ s[12]='\0'; /*end at minutes*/ printf("%s\t%s\t%s\t", current_record->ut_name, current_record->ut_line, s); if (strlen(current_record->ut_host)!=0) printf("(%s)", current_record->ut_host); printf("\n"); } } int main() { struct utmp current_record; int fd=open(UTMP_FILE, O_RDONLY); while(1) { if (read(fd, ¤t_record, sizeof(current_record))); else break; show_info(¤t_record); } close(fd); }