Red de conocimiento informático - Conocimiento de la instalación - Soy un principiante y no sé cómo resolver esta pregunta de programación de Linux. Me gustaría pedirle consejo a un experto y que me ayude a compilarlo.

Soy un principiante y no sé cómo resolver esta pregunta de programación de Linux. Me gustaría pedirle consejo a un experto y que me ayude a compilarlo.

/************

Implementación de programación? Sincronización y exclusión mutua de procesos

Tema: Hay padre/hijo/ hija Tres personas y un plato.

Cuando el plato está vacío, el padre pone al azar plátanos o manzanas en el plato;

El hijo y la hija inmediatamente toman la fruta, pero el hijo solo toma Apple, la hija solo toma plátanos

Padre puso *** 20 veces.

¡Simulación de programación!

********** ****** **/

#includelt;stdio.hgt;

#include?lt;errno.hgt;

#include?lt ;semaphore.hgt;

#include?lt;fcntl.hgt;

#include?lt;unistd.hgt;

//#include?lt ;process.hgt;/ /para?windows

#define?OPEN_FLAG?O_RDWR|O_CREAT

#define?OPEN_MODE?00777

#define?INIT_V0

static?sem_t?*sem_apple?=?NULL;

static?sem_t?*sem_banana?=?NULL;

int?fatherdo(){

int ?i=20;

mientras(i--gt;0){

printf("[u]padre?put?s?\n" ,i,i2== 0?"Apple":"Banana");

if(i2==0){

sem_post(sem_apple);

}else{

sem_post(sem_banana);

}

dormir(1);

}

//Eliminar el semáforo creado por el sistema

sem_unlink("sem_apple");

sem_unlink("sem_banana");

//Destruir completamente el abrir semáforo

p>

sem_close(sem_apple);

sem_close(sem_banana);

return?0;

}

int?i=10;

mientras(i--gt;0) ){

//Operación P

sem_wait(sem_apple);

printf("[u]Hijo: ¡Obtuve una manzana, padre! \n\n", i);

}

return?0;

}

int?hijado(){

dormir(2);

int?i=10;

mientras(i--gt;0){

// Operación P

sem_wait(sem_banana);

printf("[u]Hija: ¡I?get?an?bnana,padre!\n\n",i);

}

volver

?0;

}

int?main(){

printf("Program?begin:\n\n"); //Crear 2 nombres semáforo sem_apple?=?sem_open("sem_apple",?OPEN_FLAG,?OPEN_MODE,?INIT_V);? sem_banana?=?sem_open("sem_banana",?OPEN_FLAG,?OPEN_MODE,?INIT_V);?

pid_t?pid=-1;

pid=fork();

if(-1==pid){

error("¿Error? fork( )!"); return?1;

}else?if(pid==0){

//Subproceso? Hijo

sondo ();

}else?if(pidgt;0){

pid=fork();

if(-1==pid){

perror("¿Error?fork()!"); return?1;

}else?if(pid==0){

//Subproceso hija

hija();

}else?if(pidgt;0){

//Proceso principal

padredo( );

printf("¿Programa?Fin...\n\n");

}

}

printf( "[d ?lt;=?d]¡Tres?Procesos?son?end!\n",getpid(),getppid());

return?0;

}

Modo de comunicación del semáforo del proceso.

Referencia:?/s/blog_510737a301012z7e.html

Normalmente me comunico entre hilos. No estoy muy familiarizado con la comunicación entre procesos, así que intenté escribir sobre ello.