Long description

Back

The 33 lines of code are as follow

forward slash asterisk File copy program dot Error checking and reporting is minimal dot asterisk forward slash

hash include open angle bracket sys forward slash types dot h close angle bracket forward slash asterisk include necessary header files asterisk forward slash

hash include open angle bracket fontl dot h close angle bracket

hash include open angle bracket stdlib dot h close angle bracket

hash include open angle bracket unistd dot h close angle bracket

int main open parenthesis int argc coma char asterisk argv open close box bracket close parenthesis semicolon forward slash asterisk ANSI prototype asterisk forward slash

hash define BUF underscore SIZE 4096 forward slash asterisk use a buffer size of 4096 bytes asterisk forward slash

hash define OUTPUT underscore MODE 0700 forward slash asterisk protection bits for output file asterisk forward slash

int main open parenthesis int argc coma char asterisk argv open close box bracket close parenthesis

open curly bracket

int in underscore fd coma out underscore fd coma rd underscore count coma wt underscore count semicolon

char buffer open box bracket BUF underscore SIZE close box bracket semicolon

if open parenthesis argc exclamation equals to 3 close parenthesis exit open parenthesis 1 close parenthesis semicolon forward slash asterisk syntax error if argc is not 3 asterisk forward slash

forward slash asterisk Open the input file and create the output file asterisk forward slash

in underscore fd equals to open open parenthesis argv open box bracket 1 close box bracket coma O underscore RDONLY close parenthesis semicolon forward slash asterisk open the source file asterisk forward slash

if open parenthesis in underscore fd less than 0 close parenthesis exit open parenthesis 2 close parenthesis semicolon forward slash asterisk if it cannot be opened coma exit asterisk forward slash

out underscore fd equals to creat open parenthesis argv open box bracket 2 close box bracket coma OUTPUT underscore MODE close parenthesis semicolon forward slash asterisk create the destination file asterisk forward slash

if open parenthesis out underscore fd less than 0 close parenthesis exit open parenthesis 3 close parenthesis semicolon forward slash asterisk if it cannot be created coma exit asterisk forward slash

forward slash asterisk Copy loop asterisk forward slash

while open parenthesis TRUE close parenthesis open curly bracket

rd underscore count equals to read open parenthesis in underscore fd coma buffer coma BUF underscore SIZE close parenthesis semicolon forward slash asterisk read a block of data asterisk forward slash

if open parenthesis rd underscore count less than equals to 0 close parenthesis break semicolon forward slash asterisk if end of file or error coma exit loop asterisk forward slash

wt underscore count equals to write open parenthesis out underscore fd coma buffer coma rd underscore count close parenthesis semicolon forward slash asterisk write data asterisk forward slash

if open parenthesis wt underscore count less than equals to 0 close parenthesis exit open parenthesis 4 close parenthesis semicolon forward slash asterisk wt underscore count less than equals to 0 is an error asterisk forward slash

close curly bracket

forward slash asterisk Close the files asterisk forward slash

close open parenthesis in underscore fd close parenthesis semicolon

close open parenthesis out underscore fd close parenthesis semicolon

if open parenthesis rd underscore count equals to equals to 0 close parenthesis forward slash asterisk no error on last read asterisk forward slash

exit open parenthesis 0 close parenthesis semicolon

else

exit open parenthesis 5 close parenthesis semicolon forward slash asterisk error on last read asterisk forward slash

close curly bracket

Back