Question
Contents of Who1.c #include #include #include #include #include #define SHOWHOST /* include remote machine on output */ int main() { struct utmp current_record; /* read
Contents of Who1.c
#include
#define SHOWHOST /* include remote machine on output */
int main() { struct utmp current_record; /* read info into here */ int utmpfd; /* read from this descriptor */ int reclen = sizeof(current_record);
if ((utmpfd = open(UTMP_FILE, O_RDONLY)) == -1) { perror( UTMP_FILE ); /* UTMP_FILE is in utmp.h */ exit(1); }
while (read(utmpfd, ¤t_record, reclen) == reclen) { show_info(¤t_record); } close(utmpfd); return 0; /* went ok */ }
/*! * show info() * displays contents of the utmp struct in human readable form * *note* these sizes should not be hardwired */ show_info(struct utmp *utbufp) { printf("%-8.8s", utbufp->ut_name); /* the logname */ printf(" "); /* a space */ printf("%-8.8s", utbufp->ut_line); /* the tty */ printf(" "); /* a space */ printf("%10ld", utbufp->ut_time); /* login time */ printf(" "); /* a space */ #ifdef SHOWHOST printf("(%s)", utbufp->ut_host); /* the host */ #endif printf(" "); /* newline */ }
5. The whol program lists every entry in the utmp file. That was not our intention but it provided a handy tool for examining the contents of utmp. Make uho1 more useful by adding code to it that prints out all the other fields in the struct. The ut type field is particularly useful
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started