Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 7 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Dom Ene 23, 2011 4:08 am
Mensajes: 3

Nota Publicado: Dom Ene 23, 2011 4:15 am 
Arriba  
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!!

 Perfil  

Desconectado
Administrador
Administrador
Avatar de Usuario

Registrado: Lun Abr 19, 2010 12:30 am
Mensajes: 3888
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Dom Ene 23, 2011 5:07 pm 
Arriba  
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

_________________
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Dom Ene 23, 2011 4:08 am
Mensajes: 3

Nota Publicado: Dom Ene 23, 2011 7:39 pm 
Arriba  
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!!

 Perfil  

Desconectado
Administrador
Administrador
Avatar de Usuario

Registrado: Lun Abr 19, 2010 12:30 am
Mensajes: 3888
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Dom Ene 23, 2011 7:55 pm 
Arriba  
pues yo de c no entiendo nada --> paciencia ;)

_________________
Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Trusted Network and Developer | Lee el Reglamento !! |WIKI-EL | Twitter @mr_mcun
Debian + TTY | ArchLinux + awesome | openSUSE + Gnome-Shell | Linux User #508809

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Jue Abr 19, 2007 7:00 am
Mensajes: 1519
Ubicación: Cojutepeque, El Salvador C. A.

Nota Publicado: Dom Ene 23, 2011 10:59 pm 
Arriba  
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.htm

en particular la guía #4 de procesos

http://www.udb.edu.sv/Academia/Laborato ... uia4SO.pdf

puede que te ayude un poco

Saludos :)

_________________
Grüße...
Maiku

Full linux alchemist!!!

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Dom Ene 23, 2011 4:08 am
Mensajes: 3

Nota Publicado: Lun Ene 24, 2011 11:10 pm 
Arriba  
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!!

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 8:00 am
Mensajes: 1457
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Mar Ene 25, 2011 11:20 pm 
Arriba  
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)

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 7 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
Creacion de procesos con fork

en Programación

chonico

5

1620

Mar Jun 26, 2012 4:04 pm

hipersayan_x Ver último mensaje

Creacion de procesos hijos con fork

en Programación

chonico

6

18255

Jue Dic 02, 2010 1:46 am

akodo Ver último mensaje

crear procesos con fork

en Programación

skylark

5

2007

Jue Nov 11, 2010 1:51 am

akodo Ver último mensaje

Control de procesos linux

en Programación

Fantuu

0

311

Lun Dic 18, 2017 5:34 pm

Fantuu Ver último mensaje

Planificador de procesos Linux

en Sistema

Julito

0

1944

Mar Oct 06, 2009 1:39 am

Julito Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO