procesy potomne a zakończenie procesu macierzystego

0

Mam zadanie w którym muszę uruchomić trzy procesy potomne i natychmiast po tym mój proces macierzysty musi się zakończyć. Problem polega na tym, że do pierwszego procesu potomnego muszę podawać tekst ze standardowego wejścia już po zakończeniu procesu macierzystego - w takiej sytuacji powłoka przejmuje terminal i wejście w procesie potomnym nie działa.
Co z tym fantem zrobić?

1

To jest w poprzek idei "standardowego we/wy".
Dla przypomnienia, zastępuje ona potrzebę wymiany danych pomiędzy procesami przy pomocy plików.
Jeśli proces źródłowy się zamyka, to użyj pliku jako nośnika danych. Lub MSMQ lub bazy danych.

0

Dodam jeszcze, ze zamkniecie procesu macierzystego nic tak naprawde nie daje. Mozesz go uspic wywolujac funkcje wait(pid) w oczekiwaniu na zamkniecie procesu korzystajacego z terminala i po tym zakonczyc jego dzialanie. Uspiony proces nie wykonuje zadnej pracy, ani w zadnym stopniu nie obciaza procesora. Jadro go obudzi dopiero po spelnieniu wymaganych okolicznosci, w tym przypadku zamkniecie procesu potomnego.

Jednak jak chcialbys sie pobawic, to kombinuj.
http://man7.org/linux/man-pages/man4/tty_ioctl.4.html
http://linux.die.net/man/3/tcsetpgrp
http://man7.org/linux/man-pages/man2/setpgid.2.html

Mimo wszystko, z gory uprzedze, ze nie jest to takie proste, jesli chcialbys to poprawnie zaimplementowac.

0

@m0name_l - to jest typowe zadanie akademickie, proces macierzysty musi się zamknąć. @vpiotr, skorzystałem z Twojej rady - wszystko ładnie działa. Dzięki

0

Wiem że odświeżam stary wątek, ale mam ten sam problem. Mam dwa procesy powoływane z porocesu macierzystego, i bufor współdzielony.Macierzysty zostaje zamkniety Od razu po zainicjalizowaniu. Jeden czyta z konsoli dane, drugi je wypisuje z buforu. I mam problem z tym że przy zamknieciu macierzystego nie mogę przesłać danych z konsoli. Plik też wydaje mi sie bez sensu bo od tego mam bufor. Macie może jakiś pomysł jak to rozwiązać?

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