@marnit: Te odpowiedzi, które tutaj dostajesz są specyficzne dla danego systemu operacyjnego. Dla Linuksa masz katalog /proc z katalogami o numerach zgodnych z PIDami procesów (patrz, kod powyżej). We FreeBSD masz dla C elegancką bibliotekę libprocstat: https://www.freebsd.org/cgi/man.cgi?query=libprocstat&sektion=3. W obu zapewne dałoby się to wyciągnąć ze struktur pracującego kernela przez urządzenie /dev/kmem - tego podejścia gorąco nie polecam. Nieważne, jak tego dokonasz za każdym razem przelatujesz po liście procesów i pobierasz PIDy tych, których nazwa Ci pasuje i do nich ślesz sygnał.
Edit:
niech klient śledzi stan połączenia. Jak mu się serwer rozłączy niech spróbuje się podłączyć jeszcze raz, jak to się nie uda - serwer zmarł koniec pracy.
Edit2:
albo niech przed końcem pracy roześle instrukcję zamknięcia dla pozostałych. Jeśli ten program ma działać na więcej niż jednej maszynie, to nie masz innej drogi.