Avatar billede kebee Nybegynder
08. februar 2006 - 11:58 Der er 1 kommentar

Proces der går i sted

Sidder lige med lidt kode som driller mig.
Der er en process som kører administrativMedarbejder() funktionen. processen kører fint, og printer fint "test" ud som den skal. Den kører her efter hentPerson(), som henter en struckt fra en messageque, og skriver den ud, dette virker også fint, funktionen hentPerson er nu slut, og jeg ville derfor forvente at den hopper tilbage til det sted hvor den blev kørt fra og fortsætte med koden derfra, men dette gør den ikke, "test3" bliver aldrig udskrevet, og processen går i stå.

Jeg kan ikke forstå hvorfor den gør dette, så håber nogle kan hjælpe mig.


patient patientDerBearbejdes;
patient* personFraRiget();
int msgidPatientTilSkraenke;
void hentPerson();

int administrativMedarbejder()
{
  printf ("test");
  hentPerson();
  printf ("test3");
  printf ("metoden fra administrende medarbejder patient:\n");
  printf("%s \n", patientDerBearbejdes.cprArray);
  printf("%c \n", patientDerBearbejdes.prioritet);
  printf("%c \n", patientDerBearbejdes.skadeartChar);
            return 0;
}

void hentPerson()
{
  printf("test2");
  patient patientp;
  if (msgrcv(msgidPatientTilSkraenke, (void *)&patientp, KByte, 1, 0) == -1)
  {
      printf("fejl ved msgrcv");
      exit(EXIT_FAILURE);
  }
  int i;
  for (i = 0 ; i < 11 ; i++)
  {
      patientDerBearbejdes.cprArray[i] = patientp.cprArray[i];
  }
  patientDerBearbejdes.prioritet = patientp.prioritet;
  patientDerBearbejdes.skadeartChar = patientp.skadeartChar;
  printf ("metoden fra hentPerson patient:\n");
  printf("%s \n", patientp.cprArray);
  printf("%c \n", patientp.prioritet);
  printf("%c \n", patientp.skadeartChar);
  }
Avatar billede bertelbrander Novice
09. februar 2006 - 00:01 #1
Et skud: KByte er 1024 og størrelsen på patientp er mindre end 1024 bytes?

Jeg ville forvente at der stod sizeof(patientp) og ikke KByte i kaldet til msgrcv
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester