Несколько вопросам по демонам (daemon) в linux

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Несколько вопросам по демонам (daemon) в linux

Сообщение bloodlines » 07.11.2011 10:19:15

Добрый день!
Неспешно разбираюсь с возможностями создания демонов под linux средствами fpc. Как писать (TDaemon, TDaemonDef) и собирать разобрался (спасибо статье на этом сайте).
Знаю и как запускать
Код: Выделить всё
somedaemon -r

Хотелось бы узнать:
1 - Есть ли возможности управления созданным демоном (остановка, запуск)? ( Пользуюсь Ubuntu )
2 - Какие есть тонкости создания демона под linux средствами fpc (совету, "подводные камни", фичи) ?
FPC 2.4.4, Ubuntu 10.04, Xubuntu 11.04

P.S. Извините - когда писал название темы торопился - описался. Как можно исправить?
Аватара пользователя
bloodlines
постоялец
 
Сообщения: 100
Зарегистрирован: 05.11.2008 11:26:19

Re: Несколько вопросам по демонам (daemon) в linux

Сообщение alex208210 » 07.11.2011 12:31:43

В линуксе управление демонами возложено на внешние программы например
start-stop-daemon -Sbvx /mydaemon - старт
start-stop-daemon -Kvx /mydaemon - стоп

для линукса я не использовал стандартные компоненты так как они работают некорректно для многих дистрибутивов (может кроме убунты). Поэтому посоветовал бы создавать демоны вручную
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Re: Несколько вопросам по демонам (daemon) в linux

Сообщение bloodlines » 07.11.2011 15:43:30

Спасибо - понял что надо делать вручную а не использовать lazdaemon.
Нагуглил
http://programjutsu.wordpress.com/2010/03/02/%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B5%D0%BC%D0%BE%D0%BD%D0%B0-%D1%81%D0%BB%D1%83%D0%B6%D0%B1%D1%8B-%D0%B2-linux/
Вроде бы там есть все что нужно. Но вот только этот пример никак не могу заставить работать.
Поделитесь кто-нибудь пожалуйста рабочим кодом (или кусками кода) минимального демона под linux.
Аватара пользователя
bloodlines
постоялец
 
Сообщения: 100
Зарегистрирован: 05.11.2008 11:26:19

Re: Несколько вопросам по демонам (daemon) в linux

Сообщение alex208210 » 08.11.2011 19:26:12

Код: Выделить всё
program project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, SysUtils, CustApp,baseunix
  { you can add units after this };

type

  { TMyApplication }

  TMyApplication = class(TCustomApplication)
  protected
    procedure DoRun; override;
  public
  end;

{ TMyApplication }

procedure TMyApplication.DoRun;
begin
  Terminate;
end;

var
  Application: TMyApplication;
  pid:pid_t;
  rund:boolean;

{$R *.res}

begin
  Application:=TMyApplication.Create(nil);
  Application.Title:='My Application';
  Application.Run;
  pid:=fpFork;
  rund:=true;
case pid of
0:begin
   Close(input); { close standard in }
   Assign(input,'/dev/null');
   ReWrite(input);
   Close(output); { close standard out }
   Assign(output,'/dev/null');
   ReWrite(output);
   Close(stderr); { close standard error }
   pid:=fpGetPid;
end;
-1 :begin
     WriteLn('forking error, so halt 1');
     halt(1);
    end;
    else begin
     Halt;
    end;
end;

while rund<>false do
  begin
   sleep(0);

{------------------------- код программы начало -------------------------------}

   if directoryexists('/root/d') then begin rmdir('/root/d'); mkdir('root/d2'); end; {Если создадим папку /root/d то демон удалит ее и создаст папку /root/d2}

{------------------------- код программы конец --------------------------------}
  end;
end.


этот демон надо положить в каталог демонов и запустить
Он мониторит каталог "/root/". если в нем создать каталог "/root/d" то он удалит его и создаст папку "/root/d2"
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru