Proces potomny dostaje do dyspozycji własną kopię obszaru danych i kodu procesu nadrzędnego, a także kopie deskryptorów otwartych plików i połączeń sieciowych.
Nie jest w stanie zniszczyć danych programu nadrzędnego, bo działa na własnej kopii.
To, że proces potomny może zmienić zawartość pliku otwartego przez proces nadrzędny jest oczywiste, programista powinien wziąć to pod uwagę.
W przypadku otwartych plików i połączeń sieciowych sytuacja nie jest już tak jasna. Dla przykładu:
mysql_init (&mysql); mysql_real_connect (&mysql, "localhost", "rcp", "Akuku", "rcp", 0, NULL, 0) if (! (m = fork()) ) { // proces potomny, coś robi, po czym wysyła zapytanie do bazy danych sprintf(buf, "Select * from wydzialy where idw > 100); mysql_query (&mysql, &buf[0]); } else { // proces nadrzedny, coś robi, po czym też wysyła zapytanie do bazy danych sprintf(buf, "Select id_drzwi from drzwi where nr_drzwi=23"); mysql_query (&mysql, &buf[0]); }
Jeśli zapytanie do bazy danych z jednego procesu zostanie zadane w trakcie wykonywania zapytania przez drugi proces, nic dobrego z tego nie wyniknie.
Oba procesy korzystają z tej samej struktury MYSQL, nasz program 'wybuchnie', motor bazy danych nie spodziewa się dwu zapytań na tym samym połączeniu w tym samym czasie.
Jeśli zapytania nie będą sie zdarzały w tym samym czasie, wszystko będzie OK.