Mam napisany program do obsługi sygnałów z możliwościami wykonania operacji domyślnej, zignorowania lub przechwycenia sygnału. Teraz chciałem napisać program, w którym w procesie potomnym za pomocą funkcji exec będzie uruchamiany powyższy program, a proces macierzysty ma wysyłać sygnały do uruchomionego procesu. Wykorzystuję do tego switcha. Na początku zrobiłem to w ten sposób, że dałem zmienną pid_t f=fork() i następnie wywoływałem funkcję switch (f). Wtedy w akcji dla procesu macierzystego (default) moja funkcja kill wyglądała tak: kill(f,wysylany_sygnal). Z tego co rozumiem, sygnał był wysyłany do procesu potomnego, ponieważ pod zmienną f w procesie macierzystym będę mieć PID procesu potomnego. I tutaj wszystko działało. Jednak chciałem zrobić to samo przy użyciu funkcji getpid(). W tym celu w case 0 (akcji dla procesu potomnego) pobieram za pomocą fukcji getpid() PID procesu potomnego i umieszczam go w mojej zmiennej, powiedzmy g. Jednak teraz nie wiem, jak użyć funkcji kill w procesie macierzystym, konkretniej jakie PID wpisać, ponieważ gdy przechodzę do procesu macierzystego w zmiennej g przechowywane są jakieś dziwne liczby, a po uruchomieniu funkcji exec w procesie potomnym dodatkowo są one ujemne. Dlaczego tak się dzieje i jak to naprawić?
W drugim przypadku nie mam zmiennej f, wywołanie wygląda następująco: switch(fork())