Odnośnie wieszania się pythonowych procesów
Jeff (maintainer rpma, jedna z tych milionów osób, która rozwija którąś z ważnych części linuksa, a o której nikt nie słyszał poza garstką bezpośrednio zainteresowanych osób) mi zasugerował, żebym się upewniał, czy parent odpalający waitpid ma rzeczywiście do dyspozycji childa na którego ma czekać. Otóż jakiś geniusz wymyślił, że jądro linuksa będzie po forku pozwalało na natychmiastowe skoczenie do wykonywania childa. Co oznacza, że jeśli child się od razu skończy (np. się wywali), to parent odpalając waitpid nie będzie miał już na co czekać, czyli się po prostu zwiesi.
Na oko nie wygląda na to, żeby to był powód mojego problemu, ale ów problem wygląda na tyle bezsensownie, że nie zdziwiłbym się, gdyby to pomogło. W każdym razie nie zaszkodzi.
Na oko nie wygląda na to, żeby to był powód mojego problemu, ale ów problem wygląda na tyle bezsensownie, że nie zdziwiłbym się, gdyby to pomogło. W każdym razie nie zaszkodzi.

03 XII 2004 o 15:00:18
A co to za różnica, czy od razu czy nie? Bo chyba nie rozumiem.
03 XII 2004 o 16:13:56
Jeśli od razu, to child może zakończyć działanie, zanim parent dostanie swój kawałek procesora i będzie chciał wykonać jakiekolwiek operacje na childzie (czyli ten waitpid). Więc jeśli parent sobie zachce poczekać na zakończenie childa, ale tego childa już nie będzie, bo się zakończył wcześniej, niż się parentowi zachciało, to parent będzie teraz wisiał czekając na zakończenie procesu, który się nigdy nie zakończy, bo zakończył się już zanim parent zaczął czekać.
Już bardziej rekurencyjnie tego wytłumaczyć nie mogę.
03 XII 2004 o 18:10:51
E, zaraz zaraz, a jakie to ma znaczenie?
Mam wrażenie, że mówisz raczej o dziwnym działaniu signal(3) pod Linuxem - nie forka.
Bo tego, że parent będzie się wykonywał dopóki po fork() nie wykona waitpid() to nikt w żadnym systemie nie obiecywał /bo jakby obiecał, to jakby średnio współbieżny byłby ten system/
03 XII 2004 o 18:32:43
Z tego co Jeff mówił zrozumiałem, że waitpid potrafi zgubić childa. Teraz go dopytałem i chodziło mu o specyficzną sytuację, gdy waitpid jest w signal handlarze i cośtam jeszcze jest robione, a standardowo, to waitpidowi dynda kiedy zginął child.
03 XII 2004 o 18:38:31
Na ircu byłoby szybciej, ale cóż :>
Potrafi. Ale wisieć nie musi - po to jest WNOHANG.