duda al crear procesos en windows

Iniciado por Drewermerc, 14 Abril 2014, 05:31 AM

0 Miembros y 1 Visitante están viendo este tema.

Drewermerc

Hola a todo.
bueno pues estoy tratando de crear procesos padre e hijo en windows pero el problema o la duda que tengo es que el programa me compila y todo pero lo que no entiendo es por que no se crea el proceso hijo y se muestra el mensaje que deberia mostrar nadamas se muestra el del proceso del padre.
bueno espero que me puedan ayudar con esta duda.


    #include <stdio.h>
    #include <process.h>
     
    void mi_thread( void *params )
    {
         printf("Proceso hijo");
          _endthread();
    }
    main()
    {
           
         int padre, i;
         padre = _beginthread( mi_thread, 0, NULL); 
         switch (padre)
        {
                case -1:
                        perror("no se pudo crear el proceso");
                break;
                case 0:
                    for(i=0; i <= 10; i++)
                        printf("Soy el hijo\n");
                break;
                default:
                        for(i=0; i<=10; i++)
                    printf("Soy el padre\n");
                break;
                       
        }
           
         
    }


nolasco281

Hola amigo.

No se si te ayude esto pero hace poco estaba viendo algo parecido. y lo pregunte en el foro.

se trataba de la cracion de pocesos padre he hijos.

aca el link.

http://foro.elhacker.net/programacion_cc/error_en_el_uso_del_fork-t412092.0.html

lamento si no te ayuda mucho, pero haci es como lo entendi yo.

Saludos espero que te resuelvan la duda por si no te funciona el link cuidate.
Lo que se puede imaginar... se puede programar.

Eternal Idol

Thread es hilo, no proceso, para crear un proceso usa CreateProcess.

En cuanto a _beginthread mejor mira la documentacion, los valores de retorno que vos esperas no coinciden, siempre te entra en default al devolverte el HANDLE del hilo.

Pone un getchar despues de _beginthread asi el proceso no termina y vas a leer "Proceso hijo" (aunque es un hilo).
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

nolasco281

#3
exacta mente eso iba a comentar siempre entra al default

aca una muestra como te mencionaron antes.



Lo que se puede imaginar... se puede programar.

Drewermerc

bueno muchas gracias por responder.
y bueno ya vi que salio el segundo mensaje peor porque no se repite 10 como el del padre.
bueno tambien queria decirle si no tienen un manual tutorial sobre el tema  al de la pagina de window sno le entendi muy bien pero bueno detodos modos mañan lo checo bien.
bueno tabien si me podrias decir cuando seria combeniente usar los threads ya que e leido que cuando se usan hilos se puede optimizar la memoria o que tipo de programas podria realizar.
bueno tambien si algien me quede explicar por que cuando estaba leyendo decia que se nesesita ser muy cuidado al programarlos y que se nesesita de un semaforo.
y una pregunta que es mejor crear procesos o threads.

Eternal Idol

Cita de: Drewermerc en 14 Abril 2014, 08:15 AMbueno muchas gracias por responder.
y bueno ya vi que salio el segundo mensaje peor porque no se repite 10 como el del padre.

El mensaje "Proceso hijo" se escribe en el hilo una vez y como ya te dijimos los mensajes del main no estan bien manejados, nunca es 0 el resultado de _beginthread y por eso siempre obtenes el mensaje de "Soy el padre", cosa que no deberia suceder nunca, crear un hilo en Windows no es como hacer un fork en *NIX.

Cita de: Drewermerc en 14 Abril 2014, 08:15 AMbueno tabien si me podrias decir cuando seria combeniente usar los threads ya que e leido que cuando se usan hilos se puede optimizar la memoria o que tipo de programas podria realizar.

En cualquier programa donde quieras hacer dos o mas tareas al mismo tiempo.

Cita de: Drewermerc en 14 Abril 2014, 08:15 AMbueno tambien si algien me quede explicar por que cuando estaba leyendo decia que se nesesita ser muy cuidado al programarlos y que se nesesita de un semaforo.

Si, un semaforo o mucho mejor un Mutex en Windows para sincronizar los datos compartidos. Te recomiendo leer la MSDN o algun libro para Windows y  sino trabajar en *NIX. No tiene mucho sentido tratar de usar Posix en Windows ...

Cita de: Drewermerc en 14 Abril 2014, 08:15 AMy una pregunta que es mejor crear procesos o threads.

No hay mejor o peor, son dos cosas diferentes. Todo proceso tiene un hilo principal al iniciar y puede crear mas.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Drewermerc

hola Eternal Idol.
bueno gracia spor responder y pues buscare infomacion haber que encuentro.
saludos.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón