Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Alfredo_Marin en 27 Agosto 2015, 08:55 am



Título: Trabajo
Publicado por: Alfredo_Marin en 27 Agosto 2015, 08:55 am
Hola tengo este ejercicio que que no he podido resolver alguien me podria ayudar.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/types.h>
  5. #include <sys/wait.h>
  6. #include <unistd.h>
  7. #include <fcntl.h>
  8. #include <sys/stat.h>
  9.  
  10. int main(int argc, char **argv[])
  11. {
  12. int pid;
  13. int bytes;
  14. char archivo[15];
  15. char datos[100];
  16.  
  17. printf("\nIngrese el nombre del archivo:~$  ");
  18. scanf("%s", archivo);
  19.  
  20. pid = fork();
  21.  
  22. if(pid==-1)
  23. {
  24. printf("\nERROR");
  25. exit (-1);
  26. }
  27.  
  28. if(pid==0)
  29. {
  30. printf("\nSoy el hijo");
  31. int fichero = open((strcat(archivo,".txt")),O_RDONLY);
  32. if(fichero==-1)
  33. {
  34. perror("ERROR. No se pudo abrir el fichero. ");
  35. exit (1);
  36. }
  37. else
  38. {  
  39. printf("\nFichero abierto correctamente.\n\n");
  40. bytes = read(fichero,datos,strlen(datos));
  41. printf("\nEl numero de bytes del archivo es: %d",bytes);
  42. printf("\n\n");
  43. }
  44. close(fichero);
  45.  
  46. }
  47. else
  48. {
  49. printf("\nSoy el padre\n");
  50. }
  51. return 0;
  52. }
  53.  
EL ENUNCIADO ES EL SIGUIENTE:

Citar
Escriba un programa en C que haga lo siguiente

- Pedir por teclado el nombre de un archivo
- Crear un proceso hijo
   - El proceso hijo abrirá el archivo en modo lectura, y mostrará por pantalla
     el número total de bytes del archivo. También contará y mostrará por pantalla
     cuantas veces aparecen las letras a, s, d y f (en minusculas y sin acento)

   - En caso de que ocurra un error, el proceso hijo informará por pantalla y
     terminará devolviendo el código de error 1, en caso contrario deberá devolver
     0 indicando que el proceso terminó correctamente.

- El proceso padre deberá esperar por la  culminación del proceso padre e informar sobre
  el PID y el estado en el que terminó el proceso hijo.

A continuación se muestra un ejemplo de ejecución del programa:

Esciba el nombre de un archivo: archivo.txt

PROCESO HIJO
Número total de bytes: 435 bytes
Veces que aparece la letra a: 127
Veces que aparece la letra s: 98
Veces que aparece la letra d: 45
Veces que aparece la letra f: 35

PROCESO PADRE
Ha terminado el proceso con PID = 1234 con el estado de error 0

Mod: cada tema va en su lugar, esto no es sobre linux, es sobre programacion en c, movido, los códigos de deben ir en etiquetas GeSHi, corregido, cambia el título el mismo debe ser descriptivo a la problemática


Título: Re: Trabajo
Publicado por: engel lex en 27 Agosto 2015, 09:12 am
Que problema te da o que no sabes hacer? Da detalle y se preciso

Recomiendo leer estos 2 temas
10 pasos para plantear una duda informática (http://foro.elhacker.net/index.php/topic,159345.msg751417.html#msg751417)
FAQ : Como hacer preguntas "inteligentes" (http://foro.elhacker.net/index.php/topic,7122.0.html)