как сделать так, чтобы процесс не убивался при закрытии консоли
ботать nohup или screen
сделай пару fork-ов (м.б. и одного достаточно? и твое приложение (второй потомок) не будет привязано к консоли
man 3 daemon
Это в Putty
[asuuis stable]$ sleep 10m &
[1] 28217
[asuuis stable]$ ps x
PID TTY STAT TIME COMMAND
1259 ? S 0:00 /misc/ACE133/ACE_wrappers/build/redhat9/TAO/orbsvcs/Naming_Service/Naming_Service -ORBEndpoint iiop://192.168.0.248:20000 -o /var/w
14688 ? S 0:00 bash
14702 ? TW 0:00 stty erase ?
30368 ? SW 5:15 /home/stable/misc/asuuis -ORBInitRef NameService=file:///var/www/html/ns_stable.ior -ORBDottedDecimalAddresses -ORBDebugLEvel 0 1
30385 ? S 3:23 /IBM_Java/bin/java -Djava.endorsed.dirs=/home/stable/t41/common/endorsed -classpath /IBM_Java/lib/tools.jar:/home/stable/t41/bin/bo
28170 ? S 0:00 [sshd]
28171 pts/3 S 0:00 -bash
28217 pts/3 S 0:00 sleep 10m
28218 pts/3 R 0:00 ps x
[asuuis stable]$ logout
Using username "stable".
asuuis1.cnd.ru's password:
[asuuis stable]$ ps x
PID TTY STAT TIME COMMAND
1259 ? S 0:00 /misc/ACE133/ACE_wrappers/build/redhat9/TAO/orbsvcs/Naming_Service/Naming_Service -ORBEndpoint iiop://192.168.0.248:20000 -o /var/w
14688 ? S 0:00 bash
14702 ? T 0:00 stty erase ?
30368 ? S 5:15 /home/stable/misc/asuuis -ORBInitRef NameService=file:///var/www/html/ns_stable.ior -ORBDottedDecimalAddresses -ORBDebugLEvel 0 1
30385 ? S 3:23 /IBM_Java/bin/java -Djava.endorsed.dirs=/home/stable/t41/common/endorsed -classpath /IBM_Java/lib/tools.jar:/home/stable/t41/bin/bo
28217 ? S 0:00 sleep 10m
28231 ? S 0:00 [sshd]
28232 pts/10 R 0:00 -bash
28269 pts/10 R 0:00 ps x
В линух мне грузится влом, но там имхо тоже самое будет...
или под "закрыть консоль" что-то иное понимается?
ЗЫ все понял

надо внятнее топик было назвать

---
...Я работаю антинаучным аферистом...
Потому что в *nix это называется "терминал".
В линуксе нет такого.
У меня есть man 3 daemon
КОНТРА написал 8.
выбор ОС не столь важен для него.
---
...Я работаю антинаучным аферистом...
Твоё изречение построено на логике, моё на практических наблюдениях.
Может, и такое появится.
---
...Я работаю антинаучным аферистом...
Им даже ничто не мешает взять уже написанный. Надо только убедить в этом строителей какого-нибудь релиза.
А ГПЛ и все дела?
Думаю, они скорее переизобретут этот велосипед.
Или не изобретут вовсе.
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
Так что у нас есть GPL daemon. Есть ли у вас BSD сс?
---
...Я работаю антинаучным аферистом...

В бщем, мне это нужно было, чтобы можно было с помощью fork запустить несколько процессов одновременно и они не убились. Неубиваться-то они неубиваются, но зомби плодятся просто ужас. В случае одного дочернего процесса все нормально, а когда их несколько... Корректно ли запускать fork в цикле?
Например, объяви что последний (или первый) процесс ответственен за убийство зомбей, и каждый новый форк отдавал бы ему сцылку на нового дитя, а он сам при завершении убивал бы всех зомбей, после чего отдавал бы список первому (последнему) незомбю. Синхронизируйся через мутекс.

Что-то я перестал понимать, на самом деле.
Самое лёгкое - завести себе специальный процесс, которому все будут сообщать о порождении детских процессов, а он будет постоянно убивать зомбей. Ну я не знаю, какой там самый простой способ IPC много-одному-шлют-мессаги, можно просто в файл пиды писать, хз.
Если мы этот процесс хотим открепить от закрытия консоли (форкнувшись один раз то возникает резонный вопрос - кто убъёт его? То есть он-то всех остальных зомбей убъёт, но они его в процессе покусают, поэтому когда он потом совершит ритуальное самоубийство, то сам станет зомби. Надо с этим как-то побороться, а я не знаю как.
Это кстати, в манах где-то прописано. что он зомби, до тех пор, пока родитель waitpid для него не вызовет.
лучший вариант - наплодить самописных демонов и через сокеты c ними общаться...
Оставить комментарий
walder
субж