Witam,
Napotkalem na problem jak w temacie. Dla testu utworzylem funkcje ktora tworzy fork, dziecko wyswietla na ekranie tekst i konczy, rodzic czeka na dziecko i wyswietla komunikat.
Wywoluje ta funkcje w roznych miejscach mojego programu i mam dwa rozne rezultaty. Nie dziala mi to w niektorych miejscach. Wyglada to tak jakby fork sie utworzyl, ale dziecko nie. Zauwazylem ze nie dziala mi to kiedy wywoluje ta funkcje z innego niz glowny watku, albo z GTK event.
Funkcja wyglada tak:

void test()
{
   int   nStatus;
   pid_t hProcess;

   hProcess = fork();
   if( hProcess == -1 )      {
      printf( "Unable to fork process\n" );
      return;
   }
   if( hProcess == 0 )      {
      printf( "Executing child\n" );
      exit(2);
   }
   printf( "Fork worked\n" );

   if( waitpid( hProcess, &nStatus, 0 ) == -1 )      {
      printf( "Wait failed\n");
      return;
   }

   if( WIFEXITED( nStatus ) )
     printf( "Program exited normally with %d\n",WEXITSTATUS(nStatus));
   else
      printf( "Program failed %d\n", WEXITSTATUS(nStatus) );
}

a rezultaty:

  1. kiedy wszystko dziala:

Executing child
Fork worked
Program exited normally with 2

  1. kiedy dzieje sie cos dziwnego:

Fork worked
Program failed 0

Czy ktos potrafi wytlumaczyc dlaczego tak sie dzieje? Co moze byc przyczyna? Dlaczego fork sie tworzy a dziecko nie?

Pozdrawiam,
LUK