LINUX.ORG.RU

Проблема при создании демона(сервиса) в Lazarus


0

0

Пытаюсь создать кросс платформенное приложение-демон, или в винде сервис. При попытке запуска приложение не отключается от терминала и в логе появляется следующее:

DaemonService [2010-08-02 12:34:37.677 Info] Daemon Daemon1 current status: Start Pending DaemonService [2010-08-02 12:34:37.677 Info] Failed to start daemon Daemon1 : Semaphore init failed (possibly too many concurrent threads)

По всей видимости я предполагаю ошибка в системной настройке семафоров. Если кто знает как их настроить, или есть какие-либо другие идеи, буду признателен.

И еще, стоит ubuntu-10.04-alternate-amd64.


виндовой сервис это вообще отдельный тип приложения.

и да на лазарусе писать кроссплатформу ... бред.

бери С++ Qt4.

MikeDM ★★★★★
()
Ответ на: комментарий от catap

Не системные семафоры, а настройка семафоров! Код врядли поможет, но все таки:

Program DaemonService;

Uses {$IFDEF UNIX}{$IFDEF UseCThreads} CThreads, {$ENDIF}{$ENDIF} DaemonApp, lazdaemonapp, DaemonMapperUnit1, DaemonUnit1 { add your units here };

{$R *.res}

begin Application.Initialize; Application.Title:='Test daemon application'; Application.Run; end.

//**************************************

unit DaemonUnit1;

{$mode objfpc}{$H+}

interface

uses Classes, SysUtils, FileUtil, DaemonApp;

type

{ TDaemon1 }

TDaemon1 = class(TDaemon) procedure DataModuleExecute(Sender: TCustomDaemon); private { private declarations } public { public declarations } end;

var Daemon1: TDaemon1;

implementation

procedure RegisterDaemon; begin RegisterDaemonClass(TDaemon1) end;

{$R *.lfm}

{ TDaemon1 }

initialization RegisterDaemon; end.

//**********************************************************

unit DaemonMapperUnit1;

{$mode objfpc}{$H+}

interface

uses Classes, SysUtils, FileUtil, DaemonApp;

type TDaemonMapper1 = class(TDaemonMapper) private { private declarations } public { public declarations } end;

var DaemonMapper1: TDaemonMapper1;

implementation

procedure RegisterMapper; begin RegisterDaemonMapper(TDaemonMapper1) end;

{$R *.lfm}

initialization RegisterMapper; end.

gorman
() автор топика
Ответ на: комментарий от aydar

В лазарусе есть специальный компонент Daemon (Daemon(Service) application), я его установил. И пытаюсь с ним работать. Я уже давно бы сделал стандартно закрыл бы поток ввода, перенаправил поток вывода и т.д. Но нужно сделать именно через этот компонент и именно в лазарусе.

gorman
() автор топика
Ответ на: комментарий от MikeDM

Лазарус специально ориентирован под кросплатформу. Поэтому это не БРЕД!!!

gorman
() автор топика
Ответ на: комментарий от anonymous

Если нечего ответить зачем выражаться непристойностями?

gorman
() автор топика

brainfuck тоже кроссплатформенный, это же не значит что на нем надо писать реальный софт? Кончайте этот онанизм, пишите на C.

slovazap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.