#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; FILE * utmpfile=fopen(UTMP_FILE, "r"); while(1) { fread(¤t_record, sizeof(current_record), 1, utmpfile); show_info(¤t_record); if (feof(utmpfile)) { break; } } fclose(utmpfile); }