[Linux] pid bratniego procesu

0

W procesie rodzic uruchamiam procesy jeden po drugim potomek1 a następnie potomek2 (używając fork i execl).
Chcę żeby potomek2 w pewnym momencie poczekał aż potomek1 skończy działanie. Dlatego w potomek2 chcę użyć waitpid(pid_potomek1). Tylko skąd wziąć pid_potomek1 np z poziomu rozdzica i przekazać go jako parametr do potomek2?
Potomkowie w rodzicu są widziani zawsze z pid=0 prawda?

0

Rodzic dostaje pid potomka, a potemek pid = 0. Potomek2 tworzysz w rodzicu glownym, czy w potomek1 ?

0

Potomek w rodzicu jest widziany przez swoj PID, dzieki temu można użyc waitpid()
W potomku fork() zwraca 0, żeby potomek wiedział ze jest potomkiem. Swój pid zawsze może pobrać getpid(), rodzic miałby większy problem ;]
Moim zdaniem to co chcesz zrobić to zapobieganie wyścigowi do czego potrzebujesz jednego semafora binarnego, a nie zadnego waitpid().
Ustawiasz semafor na 1 w rodzicu. Forkujesz potomków. Potomkowie opuszczają semafor na początku swojego działania i podnoszą na końcu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1