Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda_ejercicio_C

Estas en el tema de Ayuda_ejercicio_C en el foro de C/C++ en Foros del Web. ¡Hola! Este es el ejercicio que tengo que hacer: Ejecutar un programa (servidor clave) que accede a una tabla de 100 elementos que a través ...
  #1 (permalink)  
Antiguo 07/06/2011, 07:44
 
Fecha de Ingreso: junio-2011
Mensajes: 1
Antigüedad: 12 años, 10 meses
Puntos: 0
Ayuda_ejercicio_C

¡Hola!

Este es el ejercicio que tengo que hacer:

Ejecutar un programa (servidor clave) que accede a una tabla de 100 elementos que a través de otro programa mande la clave con buzones y si la clave no coincide responde con un mensaje de que no coincide y se termina el programa.
Si la clave es correcta, el servidor crea un hijo y ese hijo le manda al programa 'Clave' un mensaje de OK. Por tanto 'Clave' ya puede dar de alta, baja o hacer una consulta en la tabla; se la manda a hijo y éste actualiza la tabla. El hijo se crea para contestar al cliente que pide altas, bajas, consulta y modificar.

De momento llevo hecho esto:

#include<stdio.h>
#include<stdlib.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<sys/types.h>
#include "datos.h"

void pedir(int buzon);
main() {
t_mensaje mensaje;
// CREAR BUZON
int id_buz;

if((id_buz= msgget(CLAVE,IPC_CREAT | 0660))==-1) {
printf("ERROR EN LA CREACION DEL BUZON\n");
exit(1);
}
else {
pedir(id_buz);
}
}
//************************FUNCION SPEDIR CLAVE************************************

void pedir(int buzon) {
t_mensaje mensaje;
int longitud;

printf("\nIntroduce posible clave: ");
scanf("%d", &mensaje.contenido);
mensaje.remite = 1;
msgsnd(buzon,&mensaje,longitud,0);
}

#include<stdio.h>
#include<stdlib.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<sys/types.h>
#include "datos.h"

void servidor(int buzon);
main() {
t_mensaje mensaje;
// CREAR BUZON
int id_buz;

if((id_buz= msgget(CLAVE,IPC_CREAT | 0660))==-1) {
printf("ERROR EN LA CREACION DEL BUZON\n");
exit(1);
}
else {
servidor(id_buz);
}
}
//************************FUNCION SERVIDOR************************************

void servidor(int buzon) {
t_mensaje mensaje;
int longitud,, p;

longitud=sizeof(t_mensaje)-sizeof(long);
while(1)
{

msgrcv(buzon,&mensaje,longitud,1,IPC_NOWAIT;
if(mensaje.contenido == 25) //es la clave que necesita para ejecutar
{
p=fork();
if(p == 0)
{
mensaje.palabra = "OK";
mensaje.id = 2;
msgsnd(buzon,&mensaje,longitud,0);
exit();
}
msgrcv(buzon,&mensaje,longitud,2,IPC_NOWAIT;
if(mensaje.palabra == "OK")
{

mensaje.id = 3;
msgsnd(buzon,&mensaje,longitud,0);
}

p = fork();

if (p == 0)
{
msgrcv(buzon,&mensaje,longitud,3,IPC_NOWAIT;
}

}


else
{
printf("CLAVE NO COINCIDE");
}
}

}

Y hasta aquí llego... ¿alguien me podría hechar una mano?

Gracias!

Etiquetas: programacion, arreglos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:31.