Listing 2. Parsing the Accounting File /* * paread.c: Linux program to demonstrate reading a * process accounting record into memory. */ #include #include #include #include #include #include int main (int argc, char *argv[]) { int fd; int bytesread; struct acct a; /* accounting record */ if (argc == 1) { printf("You must supply a filename" " on the cmd line\n"); return -1; } fd = open (argv[1], O_RDONLY); if (fd == -1) { perror ("Problem opening specified file"); return -1; } /* * Read and print command name from each record * in the file */ while ((bytesread = read (fd, &a, sizeof (struct acct))) > 0) { printf ("%s\n", a.ac_comm); } return 0; }