#include /* mycat: concatenate files */    void filecopy(FILE *, FILE *);   int main(int argc, char *argv[]){   FILE *fp;   if (argc == 1){ /* no args, copy standard input */        filecopy(stdin, stdout);     }else{      while (--argc > 0){          if ((fp = fopen(*++argv, "r")) == NULL)          {             printf("cat: cannot open %s\n", *argv);                     return 1;                } else {                   filecopy(fp, stdout);               fclose(fp);          }        }   }      return 0; } /* filecopy: copy file ifp to file ofp */ #include void filecopy(FILE *ifp, FILE *ofp) {     int c;       while ((c = getc(ifp)) != EOF)      putc(c,ofp); }

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

 

#include <stdio.h> /* mycat: concatenate files */ 

 

void filecopy(FILE *, FILE *);

 

int main(int argc, char *argv[]){

  FILE *fp;

  if (argc == 1){ /* no args, copy standard input */  

     filecopy(stdin, stdout);  

  }else{

     while (--argc > 0){

         if ((fp = fopen(*++argv, "r")) == NULL)

         {

            printf("cat: cannot open %s\n", *argv);        

            return 1;      

         } else {      

            filecopy(fp, stdout);  

            fclose(fp);

         } 

      }

  }   

  return 0;

}

/* filecopy: copy file ifp to file ofp */

#include <stdio.h>

void filecopy(FILE *ifp, FILE *ofp)

   int c;   

   while ((c = getc(ifp)) != EOF)

     putc(c,ofp);

}

Use to look at mycat in operation. Type $ strace ./mycat cmd2. sh to see it print to the console
the contents of filecopy.c. You may well see quite a lot of things going on, but we can limit this
to only a
set of system
calls
interested in.
Issue the command:
we
are
$ strace - C - e trace = open, close,read, write ./mycat cmd2. sh
This will limit the output to only the file system calls and also print a summary.
Transcribed Image Text:Use to look at mycat in operation. Type $ strace ./mycat cmd2. sh to see it print to the console the contents of filecopy.c. You may well see quite a lot of things going on, but we can limit this to only a set of system calls interested in. Issue the command: we are $ strace - C - e trace = open, close,read, write ./mycat cmd2. sh This will limit the output to only the file system calls and also print a summary.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 4 steps with 2 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY