logoISU  

CS456 - Systems Programming

Spring 2026

Displaying ./code/feb5/my_cat.c

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

#define BUF 2048

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

	if (argc < 2){
	   //fprintf(stderr, "Usage: %s file\n",argv[0]);
	   //exit(1);

	   int len = strlen(argv[0]);
	   write(2, "Usage: ", 7);
	   write(2, argv[0], len);
	   write(2, " file\n", 6);
	   return 1;

	}

	char data[BUF];
	int rt;

	//open a file
	int fd = open(argv[1], O_RDONLY);
	printf("file descriptor = %d\n", fd);

	if(fd == -1){
	  write(2, "open failed\n",12);
	  return -1;
	}

	rt = read(fd, data, BUF);
	printf("bytes read: %d\n", rt);

	//printf("Number of bytes read: %d\n", rt);

	int written = write(1, data, rt);

	printf("bytes written: %d\n", written);

	close(fd);
	
	return 0;

}