#include #include #include #include int main() { char ignore1[1000]; int p, link1[2], ignore2, total = 0; pipe(link1); p = fork(); if (p == 0) { close(1); dup(link1[1]); execlp("ls", "ls", "-l", NULL); fprintf(stderr, "Can't execlp ls\n"); exit(1); } close(link1[1]); FILE * fin = fdopen(link1[0], "r"); fscanf(fin, "%s %d", ignore1, &ignore2); while (1) { char prot[20], owner[20], group[20], timeyr[20], month[10], day[10], name[100]; int refcount, size; int n = fscanf(fin, "%s %d %s %s %d %s %s %s %s", prot, &refcount, owner, group, &size, month, day, timeyr, name); if (n <= 0) break; printf("%s has length %d\n", name, size); total += size; } printf("\ntotal size of all files = %d\n", total); }