[00:01:14] <subjrs> вообще делаетца просто - цапарается тулза на чем угодно, хоть на той же Аде, которая закрывает свои стандартные потоки ввода вывода, потом форкается (там стандартные манипуляции, гдето пример валяется), а потом делается Spawn основной ада программы
[00:08:05] <subjrs> либо еще проще, через неблокирующий swapn
with Ada.Command_Line;
with Ada.Text_IO;
with Gnat.OS_Lib;
use Gnat.OS_Lib;
procedure Daemon is
ID : Process_ID;
begin
if Ada.Command_Line.Argument_Count < 1 then
Ada.Text_IO.Put_Line ("Specify program");
return;
end if;
ID := Non_Blocking_Spawn (Ada.Command_Line.Argument (1), Argument_String_To_List ("").all);
if ID = Invalid_Pid then
Ada.Text_IO.Put_Line ("Spawn return Invalid_Pid");
end if;
end Daemon;
но такой вариант не секурный, там всеже манипуляции надо проделать
[00:11:11] <subjrs> а не, это в основной программе еще надо проделать
with Gnat.OS_Lib;
with Interfaces.C;
use Gnat.OS_Lib;
use Interfaces.C;
procedure Simple is
procedure Umask (Mask : int);
pragma Import (C, Umask, "umask");
function Chdir (New_Directory : char_array) return int;
pragma Import (C, Chdir, "chdir");
begin
Umask (0);
if Chdir (To_C ("/")) < 0 then
OS_Exit (-1);
end if;
Close (Standin);
Close (Standout);
Close (Standerr);
loop
delay 10.0;
end loop;
end Simple;
в принципе такая фигня работала )
[00:11:46] <subjrs> хотел статейку замутить - но энтож костыли какието
[00:15:03] <vgodunko> Костыли или нет, а полезно может быть!
[00:15:06] <vgodunko> Даёшь статью!
[00:17:03] <subjrs> блин, да собсно вот эти две проги и есть вся статья ))
[00:17:14] <subjrs> ну там еще было про перехват прерываний и еще чтото
[00:18:13] <subjrs> карочи костыли, но мож на неделе оформлю в удобоперевариваемый вид
[00:21:26] <vgodunko> subjrs: я вот вообще само собой разумеющиеся вещи пишу, и ничего, народ читает.
[00:23:51] <subjrs> vgodunko: просто нафига оно надо если есть уже готовые демонизаторы ну или тот же nohup (хотя он не особо подходит для этого).
AWS, который логи жабы раздает, я у себя вообзе запускаю так:
screen -m -d su -l aws -c "/srv/www/bin/awserv /srv/www/etc/awserv.conf"
[00:24:04] <yeo> А что они там намудили в рантайме, что демонить нельзя?
[00:24:12] <subjrs> таски )
[00:24:16] <subjrs> они и не работают
[00:24:32] <yeo> Си-шные же работают
[00:24:37] <subjrs> а без них вприципе вроде нормально остальное
[00:24:43] <subjrs> сишные да, гнатовские нет
[00:24:58] <subjrs> обработчики прерываний тудаже
[00:25:00] <vgodunko> Хорошие демонизаторы и возможность ощутить себя стоящим рядом с седьмым кругом Ada есть разные вещи
[00:25:39] <subjrs> ))
[00:26:14] <subjrs> лан займусь еще раз этой темой
[01:54:32] <vgodunko> landgraf: примеры использования Матрёшки для чтения XML теперь можно почерпнуть на Rosetta Code