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ć?
- Rejestracja:prawie 12 lat
- Ostatnio:ponad 8 lat
- Postów:12


- Rejestracja:ponad 12 lat
- Ostatnio:ponad 4 lata
- Postów:2412
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.
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ć?
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.