Título: Error en el uso del fork() Publicado por: nolasco281 en 5 Abril 2014, 12:56 pm Hola están.
tengo un peque~no problema estaba estudiando el concepto de procesos y como estos funcionan. llegue a una parte del libro que habla de los fork(); y muestra un ejemplo que es para la creación de un nuevo proceso. El problema es que al momento de ejecutar la aplicación me muestra el siguiente error. Código
Este es el codigo. Código
Gracias. también se me olvidaba tal ves me lo pueden explicar un poco mas claro, tengo el concepto un poco confuso todavía. saludos. Título: Re: Error en el uso del fork() Publicado por: ivancea96 en 5 Abril 2014, 13:06 pm ¿Qué tiene que ver ese int* con el fork?
El problema es que al momento de ejecutar la aplicación me muestra el siguiente error. ¿Error al ejecutar la aplicación, o a compilar? Título: Re: Error en el uso del fork() Publicado por: nolasco281 en 5 Abril 2014, 13:09 pm Al compilar la aplicación.
Título: Re: Error en el uso del fork() Publicado por: ivancea96 en 5 Abril 2014, 13:14 pm Título: Re: Error en el uso del fork() Publicado por: nolasco281 en 5 Abril 2014, 13:22 pm Hola gracias por responder
este es el ejemplo que sigo (https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F2.bp.blogspot.com%2F-mp3ReTPTPyQ%2FUz_ls58o-tI%2FAAAAAAAAAoA%2Fz2ZkpNS5E8U%2Fs1600%2Ffork1.png&container=blogger&gadget=a&rewriteMime=image%2F*) y su salida es esta. (https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F3.bp.blogspot.com%2F-xCtkQ0kyDYE%2FUz_m2anhRPI%2FAAAAAAAAAoI%2F8nWbKh-IrBs%2Fs1600%2Fsalida1.png&container=blogger&gadget=a&rewriteMime=image%2F*) con la modificación que tu apuntas la salida es esta. (https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F2.bp.blogspot.com%2F-7HkqIPngy44%2FUz_nU4vewUI%2FAAAAAAAAAoQ%2FqQ8aD7IR4IU%2Fs1600%2Fejec1.png&container=blogger&gadget=a&rewriteMime=image%2F*) la pregunta es por que pasa esto Título: Re: Error en el uso del fork() Publicado por: ivancea96 en 5 Abril 2014, 13:29 pm getPid() retorna el Proccess ID (PID) del proceso actual. Con Fork, partes el proceso en 2. Cada uno, a partir de el fork(), seguirá su camino. Así que cada uno hace un printf() de su PID, más el "valor".
Supongo que lo de int* será para comprobar si la memoria se comparte entre los procesos, o algo así. Título: Re: Error en el uso del fork() Publicado por: nolasco281 en 5 Abril 2014, 13:35 pm Si es correcto lo que indicas el proceso padre y el hijo, pero me gustaria saber por que al poner (int*) si logro correr. no capto mucho esa parte.
gracias por responder. Título: Re: Error en el uso del fork() Publicado por: ivancea96 en 5 Abril 2014, 13:38 pm malloc() retorna un dato del tipo void*, un puntero a void. Tenemos que convertir ese puntero a void, a un puntero a int. Poniendo "(tipo)" antes de un dato, lo convertimos al tipo que queramos (si es posible).
Si tenemos: Código
Así lo transformamos. Este ejemplo es absurdo, ya que esto se hace automáticamente, no es necesario poner el "(int)", pero es para que veas como iría. Título: Re: Error en el uso del fork() Publicado por: nolasco281 en 5 Abril 2014, 13:42 pm creo que entendí gracias por responder y sacarme de las dudas.
saludos y muchas gracias. Título: Re: Error en el uso del fork() Publicado por: rir3760 en 5 Abril 2014, 16:08 pm me gustaria saber por que al poner (int*) si logro correr. no capto mucho esa parte. Ese programa es C y si se compila como tal utilizando la linea de comandos:Código: gcc.exe -c -ansi -pedantic -Wall -O main.c -o main.tmp Por otra parte si por alguna extraña razón se compila como C++ con: Código: g++.exe -std=c++98 -pedantic -Wall -O -c main.cpp Ello se debe a que en C puedes almacenar un valor de tipo "void *" en una variable de tipo puntero sin importar el tipo apuntado (siempre y cuando sea un puntero a objeto, los punteros a función se manejan aparte) pero en C++ se debe realizar la conversión de forma explicita (ejemplo y solución cortesía de ivancea96). Un saludo Título: Re: Error en el uso del fork() Publicado por: nolasco281 en 5 Abril 2014, 23:39 pm Muy cierto lo estaba compilando como c++ ya lo realice con C y no recibí ningún error muchas gracias por la explicación.
saludos a todos y gracias de nuevo. |