Sunteți pe pagina 1din 9

Ingeniera en Telecomunicaciones

Nombre: Juan Carlos Barrientos Quispe


CUI: 20160780
Curso: Sistemas Operativos
Docente: Ing. Rubn Matheos Herrera

Ejemplo 1
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
int main (int argc, char *argv[])
{
int fd, i;
struct stat st;
char *addr;

/* Control de argumentos */
if (argc != 2)
{
fprintf(stderr, "Uso: %s nombre_de_archivo\n", argv[0]);
exit(1);
}
/* Obtencin del tamao del archivo */
if (stat(argv[1], &st) == -1)
{
perror("stat");
exit(2);
}
/* Apertura del archivo */
fd = open(argv[1], O_RDONLY);
if (fd == -1)
{
perror("open");
exit(3);
}
/* Proyeccin del archivo en memoria */
addr = (char*)mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, (off_t)0);
if (addr == NULL)
{
perror("mmap");
(void) close(fd);
exit(4);
}
/* Cierre del archivo */
close(fd);
/* Bucle de visualizacin del contenido del archivo */
for (i = 0; (i < st.st_size); i++)
putchar(addr[i]);
/* Liberacin del archivo (de la proyeccin en memoria del archivo) */
if (munmap(addr, st.st_size) == -1)
{
perror("munmap");
(void) close(fd);
exit(5);
}
exit(0);
Ingeniera en Telecomunicaciones

}
COMPILANDO EL ARCHIVO MIAN.CPP
Ingeniera en Telecomunicaciones

CREANDO EL ARCVHIVO VI
Ingeniera en Telecomunicaciones

ejemplo 2
Ingeniera en Telecomunicaciones

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/mman.h>

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


{
int i, j, fd, fileSize;
char *addr;
unsigned char *cp, ch;
/* Control de argumentos */
if (argc != 2)
{ printf("Se debe especificar un archivo de entrada\n"); exit(1); }
/* Proyecta el archivo de entrada especificado al espacio de direcciones del
usuario */
fd = open(argv[1], O_RDONLY);
if (fd == -1)
{
perror("open");
exit(1);
}

fileSize = lseek(fd, 0, SEEK_END);


addr = (char*)mmap(NULL, fileSize, PROT_READ, MAP_PRIVATE, fd, (off_t)0);
if (addr == NULL)
{
perror("mmap");
exit(1);
}
close(fd);
/* Visualiza el ttulo en la salida por pantalla */
printf("\nVolcado del archivo: %s (%d bytes)\n", argv[1], fileSize);
/* Bucle principal para visualizar el volcado en hexadecimal y ASCII */
cp = (unsigned char*)addr;
for (int i = 0; (i < fileSize); i += 16)
{
printf("\n%08X: ", i);
for (j = 0; j < 16; j++)
{
if (i+j < fileSize )
printf("%02X ", cp[i+j]);
else
printf(" ");
}
printf(" ");
for (j = 0; (j < 16); j++)
{
ch = (i+j < fileSize) ? cp[i+j] : ' ';
if ((ch < 0x20) || (ch > 0x7E))
ch = '.';
printf("%c", ch);
}
}
printf("\n\n");
/* Liberacin del archivo de entrada proyectado en memoria */
if (munmap(addr, fileSize) == -1)
{
perror("munmap");
Ingeniera en Telecomunicaciones

close(fd);
exit(5);
}
exit(0);
}

COMPILAR EL ARCHIVO
Ingeniera en Telecomunicaciones

CREANDO EL ARCHIVO VI
Ingeniera en Telecomunicaciones
Ingeniera en Telecomunicaciones

S-ar putea să vă placă și