Estoy tratando de crear un programa que use fork() para crear un nuevo proceso. La salida de muestra debería verse así:fork() procesos secundarios y secundarios
Este es el proceso hijo. Mi pid es 733 y el ID de mi padre es 772.
Este es el proceso principal. Mi pid es 772 y la identificación de mi hijo es 773.
Así es como me programé mi programa:
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), fork());
return 0;
}
Esto da lugar a la salida:
Este es el proceso hijo. Mi pid es 22163 y el ID de mi padre es 0.
Este es el proceso hijo. Mi pid es 22162 y el ID de mi padre es 22163.
¿Por qué está imprimiendo la declaración dos veces y cómo puedo mostrarla correctamente después de que aparezca la identificación del niño en la primera oración?
EDIT:
#include <stdio.h>
#include <stdlib.h>
int main() {
int pid = fork();
if (pid == 0) {
printf("This is the child process. My pid is %d and my parent's id is %d.\n", getpid(), getppid());
}
else {
printf("This is the parent process. My pid is %d and my parent's id is %d.\n", getpid(), pid);
}
return 0;
}
Su programa no intenta imprimir las palabras "proceso primario" en ninguna parte. No están presentes en el texto del programa, ¿por qué espera que se impriman? –
'hombre tenedor '. Léelo. Comprende las palabras. Vaya a StackOverflow cuando no tenga ningún medio para encontrar la respuesta usted mismo. Serás un mejor programador para esta experiencia. – asveikau
Además, 'fork' no devuelve una identificación de proceso principal al elemento secundario. Devuelve 0 al hijo y el ID del hijo al padre. Así es como sabes cuál es cuál. –