Sistemas operativos modernos
r Programa que copia archivos. La verificación y el informe de errores son mínimos. */ #include <sys/types.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> r incluye archivos de encabezado necesarios V int main(int argc, char *argv[]); #define BUF_SIZE 4096 #define OUTPUT^MODE 0700 int main(int argc, char *argv[]) { /* prototipo ANSI V /* usa búfer de 4096 bytes 7 /* bits de protección para archivo de salida */ int in_fd, out_fd, rd_count, wt_count; char buffer[BUF_SIZE]¡ if (argc != 3) exit(1); r error de sintaxis si argc no es 3 */ r Abre archivo de entrada y crea archivo de salida */ in_fd = open(argv[1], 0_RD0NLY)¡ /* abre el archivo de origen V if (in_fd < 0) exit(2): /* si no se puede, terminar */ out_fd = creat(argv[2], OUTPUT_MODE); /* crea el archivo de destino */ if (out_fd < 0) exit(3): /* si no se puede, terminar V r Ciclo de copiado */ while (TRUE) { rd_count = read(in_fd, buffer, BUF_S1ZE); /* lee bloque de datos */ if (rd_count <= 0) break; /* si fin de archivo o error, salir del ciclo */ wt_count = write(out_fd, buffer, rd_count); /* escribe datos */ } if (wt_count <= 0) exit(4); /* wt count <= Oes un error V r Cierra los archivos */ close(in_fd); close(out_fd); if (rd_count == 0) exit{0); else exit(5); /* no hubo error en la última lectura V /* hubo error en la última lectura V Figura 6-5. Programa sencillo para copiar un archivo.
RkJQdWJsaXNoZXIy MjI4NDcx