|
Ver temas sin respuesta | Ver temas activos
Foros Linux » Desarrollo » Programación
Página 1 de 1
|
[ 7 mensajes ] |
|
| Autor |
Mensaje |
luis__cap

Forista Nuevo
Registrado: Sab Ene 22, 2011 8:08 pm Mensajes: 3
|
 Publicado: Sab Ene 22, 2011 8:15 pm |
|
|
Hola, primero daros la enorabuena por la pagina, ya que me ayudo mucho con los ejercicios a la introduccion de linux. Queria haceros una pregunta, ya que ando muy perdido en el tema de creación de procesos. Necesito realizar tres procesos con las siguientes caracteristicas :
- pr11: Proceso que crea mediante un "execl" al proceso pr12 y crea una copia de pr11 mediante un "fork". Al empezar pr11 saca por pantalla el mensaje:
"Soy pr11 y mi pid es: <pid de pr11>"
Al empezar la copia de pr11 saca por pantalla el mensaje:
"Soy la copia de pr11 y mi pid es: <pid de copia de pr11>"
El original crea un fichero llamado "prac1.dat" y modifica la salida de error del proceso pr12 para que este pueda escribir en el fichero por la posicion 2 de la tabla de canales.
Antes de terminar pr11 original saca un mensaje que dice:
"Fin de pr11 original"
La copia escribe su pid en el fichero "prac1.dat". Antes de terminar la copia de pr11 saca un mensaje que dice: "Fin de la copia de pr11"
- pr12: Proceso que crea mediante un "execl" al proceso pr13.
Al empezar pr12 saca por pantalla el mensaje:
"Soy pr12 y mi pid es: <pid de pr12>"
Escribe su pid en el fichero "prac1.dat", utilizando la posicion de error de la tabla de canales.
Antes de terminar pr12 saca un mensaje que dice:
"Fin de pr12"
- pr13: Al empezar pr13 saca por pantalla el mensaje:
"Soy pr13 y mi pid es: <pid de pr13>"
Abre el fichero "prac1.dat", lee el pid del proceso pr12 y el pid de "pr11 copia" y visualiza los siguientes mensajes por pantalla:
"Soy pr13 y el pid de pr12 es: <pid de pr12>" "Soy pr13 y el pid de pr11 copia es: <pid de pr11 copia>" Antes de terminar pr13 saca un mensaje que dice:
"Fin de pr13"
El principio lo comprendo, el crear copia y hijos, pero cuando empieza con lo de modificar salida de errores me lio bastante, no lo entiendo :S por favor, si podeis ayudarme estaria muy agradecido. Gracias de antemano!!
|
|
|
|
 |
mcun

Moderador
Registrado: Dom Abr 18, 2010 4:30 pm Mensajes: 2790 Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
|
 Publicado: Dom Ene 23, 2011 9:07 am |
|
|
pues no vi en tu post que hablaras de ningún lenguaje ¿ da igual que ea en bash o c++ o python o java ? deberías indicarlo también en el titulo
_________________ ... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..
Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM Debian| ArchLinux |Linux User #508809
|
|
|
|
 |
luis__cap

Forista Nuevo
Registrado: Sab Ene 22, 2011 8:08 pm Mensajes: 3
|
 Publicado: Dom Ene 23, 2011 11:39 am |
|
|
es en c, la verdad que es en lo que mas me lio, en modificar la salida de errores asi como en guardar el PID en el segundo proceso en el fichero "prac1.dat", no me sale :S alguien me podria ayudar?? muchas graciass!!
|
|
|
|
 |
mcun

Moderador
Registrado: Dom Abr 18, 2010 4:30 pm Mensajes: 2790 Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
|
 Publicado: Dom Ene 23, 2011 11:55 am |
|
|
|
 |
maiku

Moderador
Registrado: Mié Abr 18, 2007 11:00 pm Mensajes: 1209 Ubicación: Cojutepeque, El Salvador C. A.
|
 Publicado: Dom Ene 23, 2011 2:59 pm |
|
luis, disculpa que lo diga así, por lo general en espacio linux nadie resuelve ejercicios o tareas, se aportan ideas y se colabora leyendo y mejorando el código. Puedes colocar tu código y probablemente otros usuarios te darán buenas ideas (disculpa no lo haga yo, soy malo para C) por otro lado, te recomiendo unas guías de C de mi universidad http://www.udb.edu.sv/Academia/Laborato ... formSO.htmen particular la guía #4 de procesos http://www.udb.edu.sv/Academia/Laborato ... uia4SO.pdfpuede que te ayude un poco Saludos 
_________________ Grüße...
Maiku
Full linux alchemist!!!
|
|
|
|
 |
luis__cap

Forista Nuevo
Registrado: Sab Ene 22, 2011 8:08 pm Mensajes: 3
|
 Publicado: Lun Ene 24, 2011 3:10 pm |
|
|
gracias maiku!! me ha ayudado bastante!! lo llevo bastante adelantado, pero sigo teniendo dos problemas, cuando me guardan el PID en prac1.dat no me lo guarda bien, genera distintos caracteres, y el otro problema es que no consigo en el proceso pr13 leer los PID de los otros dos procesos y mostrarlos, se que se tiene que hacer ocn un read pero nose como :S os adjunto lo que llevo hecho por si me podeis ayudar porfavor:
PR11:
#include <stdio.h> #include <unistd.h>
main(int argc, char *argv[]) { int pr11HIJO; int dir; //printf("Soy pr11 y mi pid es: %d\n",getpid()); //creat("prac1.dat",0700); dir=creat("prac1.dat",0700); pr11HIJO=fork(); //creamos hijo pr11 if (pr11HIJO==0) { int aux=getpid(); write(dir,&aux,sizeof(aux)); close(2); dup(dir); sleep(1); printf("Soy la copia de pr11 y mi pid es: %d\n",getpid()); execl("pr12.c","pr12.c",0); //printf("fin de la copia de pr11"); } else { printf("Soy pr11 y mi pid es: %d\n",getpid()); sleep(4); printf("fin de la copia de pr11 \n"); sleep(7); printf("Fin del proceso pr11 \n"); } sleep(10); }
PR12:
#include <stdio.h> #include <unistd.h> main() { printf("Soy el proceso pr12 y mi pid es %d \n", getpid()); int aux2=getpid(); write(prac1.dat, aux2, sizeof(aux)); execl("prc13.c", "prc13.c", 0); printf("fin del proceso pr12"); sleep(20); }
PR13:
#include <stdio.h> #include <unistd.h> main() { printf("Soy el proceso pr13 y mi pid es %d \n", getpid()); int aux=getpid(); write(prac1.dat, aux, sizeof(aux)); printf("fin del proceso pr13"); sleep(20); }
muchas gracias!!
|
|
|
|
 |
akodo

Moderador
Registrado: Mié Nov 28, 2007 12:00 am Mensajes: 1361 Ubicación: En la X del explorer (pulse para llamar)
|
 Publicado: Mar Ene 25, 2011 3:20 pm |
|
|
No sé hasta qué punto estaría bien (de hecho no creo que sea lo más adecuado), pero podrías pasar los pids como parámetros opcionales a los programas. Si el número de parámetros es mayor que 0 (sin contar el nombre del programa, que no sé si se cuenta o no como parámetro) has de suponer que dichos parámetros son pids.
La otra opción podría ser utilizar un fichero temporal para que los procesos escriban sus pids, y luego leer dicho archivo.
_________________ Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)
|
|
|
|
 |
|
|
|
Página 1 de 1
|
[ 7 mensajes ] |
|
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados
No puede abrir nuevos temas en este Foro No puede responder a temas en este Foro No puede editar sus mensajes en este Foro No puede borrar sus mensajes en este Foro No puede enviar adjuntos en este Foro
|
|