elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  crear archivo de configuracion swap
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: crear archivo de configuracion swap  (Leído 2,048 veces)
ccsponcer3

Desconectado Desconectado

Mensajes: 11


Ver Perfil
crear archivo de configuracion swap
« en: 18 Mayo 2016, 05:25 am »

Hola gente,estoy haciendo un tp para la facu el cual requiere emular el comportamiento de un sistema operativo. En mi caso me toco el swapeo del sistema, memoria virtual.

Lo que se me pide es crear un archivo de configuracion el cual inicialmente deberá ser rellenado con el caracter \0, a fines de inicializar la partición de swap. El tamaño de las páginas escritas en swap es configurable, así como también el nombre de este archivo.

Se nos recomienda hacer uso del comando dd de linux para la creacion del archivo

Bien. googleando bastante encontre lo siguiente:

system(" dd if=/dev/zero of=rutaDelArchivo bs=2M count=4")

if: inicializa en cero el archivo
of: pasa la ruta del archivo
bs: tamaño de paginas
count: cantidad de paginas

el problema es que ahi yo estoy harcodeando los valores y lo que yo deberia hacer es que fuera configurable.  A su vez ya nos dan un archivo de configuracion con lo siguiente:
PUERTO_ESCUCHA   6000
NOMBRE_SWAP         swap.data
CANTIDAD_PAGINAS   512
TAMANIO_PAGINA   25613
RETARDO_COMPACTACION   60000


Osea, lo que yo tendria que hacer es una funcion que reciba el comando dd y que el mismo comando pueda recibir los respectivos NOMBRE_SWAP, CANTIDAD_PAGINAS Y TAMANIO_PAGINA del archivo de configuracion y crear asi el archivo de swap vacio que estoy necesitando.

Espero que no haya sido tan largo y me puedan tirar una mano, gracias!!!


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.641

🏴 Libertad!!!!!


Ver Perfil WWW
Re: crear archivo de configuracion swap
« Respuesta #1 en: 18 Mayo 2016, 05:42 am »

A ver, se ve interezante :)
¿Necesitas que programa en C genere el archivo de configuracion ?

¿ Necesitas que el archivo en C lea la configuracion y posterioremnte mande a llamar a dd con los parametros  necesarios para crear la swap ?

Algo de codigo:
Código
  1. FILE *conf;
  2. char *NOMBRE_SWAP = "Nombre";
  3. char *dd = calloc(1000,1);
  4. char *config = calloc(1000,1);
  5. int count_page = 512;
  6. int size_page = 25613;
  7. snprintf(config,1000,"PUERTO_ESCUCHA\t6000\nNOMBRE_SWAP\t%s\nCANTIDAD_PAGINAS\t%i\nTAMANIO_PAGINA\t%i\nRETARDO_COMPACTACION\t60000",NOMBRE_SWAP,count_page,size_page);
  8. snprintf(dd,1000,"dd if=/dev/zero of=%s bs=%i count=%i",NOMBRE_SWAP,count_page,size_page);
  9. exec(dd);
  10.  
  11. conf = fopen("Test","w");
  12. fprintf(conf,"%s",config);
  13.  
  14.  

Saludos!


« Última modificación: 18 Mayo 2016, 05:52 am por AlbertoBSD » En línea

Publickey: 03b8b1bf1830c8d407870001ec0e7badb7a6632255fb0051284b14f53791bd6087
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
ccsponcer3

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: crear archivo de configuracion swap
« Respuesta #2 en: 18 Mayo 2016, 17:43 pm »

Claro pero yo tengo un archivoConfigSwap.cfg en algun lado que tiene esto:
PUERTO_ESCUCHA= 6000
NOMBRE_SWAP= swap.data
CANTIDAD_PAGINAS= 512
TAMANIO_PAGINA=25613
RETARDO_COMPACTACION=60000


y yo en alguna funcion mia, ponele "crearParticionSwap" recibo el comando dd y dicho comando recibe para of NOMBRE_SWAP, para bs TAMANIO_PAGINA y para count CANTIDAD_PAGINA y con eso crea la particion vacia de dicho tamaño y dicho nombre

osea recibe lo que tiene cada una de esas variables del archivo .cfg lo que no entiendo es como invocarlas siendo un archivo aparte y como el comando dd lo recibe... ademas en algun lado tengo que colocar la ruta del archivo .cfg de donde voy a sacar lo anterior y no se como.

Igual tu codigo esta bien, pero no es justamente asi. Me estoy quemando el coco jaja
Gracias por la ayuda!
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.641

🏴 Libertad!!!!!


Ver Perfil WWW
Re: crear archivo de configuracion swap
« Respuesta #3 en: 18 Mayo 2016, 18:19 pm »

Solucion fscanf

Codigo:

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. int main() {
  6. FILE *conf = NULL;
  7. char *config_file = "config.txt";
  8. char *nombre_swap = calloc(50,1);
  9. char *dd = calloc(1000,1);
  10. int count_page = 0;
  11. int size_page = 0;
  12. conf = fopen(config_file,"r");
  13. if(conf) {
  14. fgets(dd,1000,conf); //Saltamos la primer linea
  15. fscanf(conf,"NOMBRE_SWAP=%s\n\r",nombre_swap);
  16. fscanf(conf,"CANTIDAD_PAGINAS=%d\n\r",&count_page);
  17. fscanf(conf,"TAMANIO_PAGINA=%d\n\r",&size_page);
  18. memset(dd,0,1000);
  19. snprintf(dd,1000,"dd if=/dev/zero of=%s bs=%i count=%i",nombre_swap,count_page,size_page);
  20. printf("dd command: %s\n",dd);
  21. //exec(dd); //Ejecutar dd
  22. }
  23. else {
  24. printf("no se puede abrir el archivo de configuracion\n");
  25. }
  26. }

Salida:
Código:
C:\Users\alberto\Desktop>cfg.exe
dd command: dd if=/dev/zero of=swap.data bs=512 count=25613

Solo le tienes que poner el nombre de tu archivo de configuracion y descomentar la linea del exec

Saludos!
En línea

Publickey: 03b8b1bf1830c8d407870001ec0e7badb7a6632255fb0051284b14f53791bd6087
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
ccsponcer3

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: crear archivo de configuracion swap
« Respuesta #4 en: 21 Mayo 2016, 02:25 am »

Muchas gracias!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines