Daemons

  • Original von asraelNur solltest Du kein Cocoa Projekt benutzen sondern entweder ein Foundation, CoreFoundation oder ein normalles C-Programm.


    #pragma klugscheiss ON
    Foundation IST Cocoa
    #pragma klugscheiss OFF

    Ausserdem würde ich das so nicht sagen. Es kann Gründe für eine NSApp basierte Applikation als daemon geben.

    LSBackgroundOnly ist Dein Freund extra für diese Zwecke.

    Dennnoch sollte man sich wirklich überlegen, ob es nicht auch eine der von asrael genannten Apps sein kann.

    Alex

    EDIT: Wow bin ich nett. Da habe ich wirklich jemandem geantwortet, der "Gib Hip Hop keine Chance" als Avatar hat.
    The only thing that really worried me was the ether.
  • Original von below
    Original von asraelNur solltest Du kein Cocoa Projekt benutzen sondern entweder ein Foundation, CoreFoundation oder ein normalles C-Programm.


    #pragma klugscheiss ON
    Foundation IST Cocoa
    #pragma klugscheiss OFF

    Ausserdem würde ich das so nicht sagen. Es kann Gründe für eine NSApp basierte Applikation als daemon geben.

    LSBackgroundOnly ist Dein Freund extra für diese Zwecke.

    Dennnoch sollte man sich wirklich überlegen, ob es nicht auch eine der von asrael genannten Apps sein kann.


    Foundation ist auf jedenfall machbar, aber irgendwie hatte ich die Befürchtung, dass beim Start das Terminal aufgeht...

    EDIT: Wow bin ich nett. Da habe ich wirklich jemandem geantwortet, der "Gib Hip Hop keine Chance" als Avatar hat.


    Das ist mein Standart Forum-Avatar, weil viele Foren nur sehr kleine Bilder zulassen (dieses auch), und ich keine Lust habe eines meiner andren originellen JPEGs zu skalieren...
    Skeiron
    Der Mac heiligt die Mittel.
  • Einfach Antwort: In dem Du es nicht beendest!

    Am besten wäre es zu wissen, was Dein Daemon tun soll. Wartet er auf was? Insb. wenn das "was" eine Netzwerkverbindung ist, kannst Du den Daemon auch "on Demand" starten.

    Und sonst kannst zum Beispiel selber einen RunLoop rennen lassen, oder mit sleep arbeiten.

    Gruss

    Alex

    Psssst: "Hip Hop Hooraay!"
    The only thing that really worried me was the ether.
  • Er soll warten, bis iTunes startet, dann soll er eine App starten. Wenn iTunes beendet wird, merkt meine App das und beendet sich. Theoretisch ist es also auch möglich, dass der Daemon zweimal die App starten muss.

    Das nicht beenden hört sich genial an. Einfach return 0; weglassen?
    Skeiron
    Der Mac heiligt die Mittel.
  • Original von scaramangado
    Er soll warten, bis iTunes startet, dann soll er eine App starten. Wenn iTunes beendet wird, merkt meine App das und beendet sich. Theoretisch ist es also auch möglich, dass der Daemon zweimal die App starten muss.

    Das nicht beenden hört sich genial an. Einfach return 0; weglassen?


    Nee nee, so einfach nicht.

    Wie wartest Du denn darauf, NSDistributedNotification oder so?

    In jedem Fall verhindert z.B. dass, das Deine App beendet wird:

    BOOL quit = NO;

    while (quit == NO)
    sleep (1);

    Alex
    The only thing that really worried me was the ether.
  • Original von below
    Original von scaramangado
    dass NSWorkspace nicht Teil des Foundation frameworks ist (warum auch immer...) Muss es wohl doch in einer NSApplication machen....


    Ja, warum wohl ;)

    developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html

    Alex


    Ich wollte damit zum Ausdruck bringen, dass ich keinen Sinn darin sehe, dass Apple NSWorkspace nicht in das Foundation Framework gesteckt hat. Gerade für diesen bereich, wäre das sehr sinnvoll...

    PS: Vielleicht skaliere ich ja mal ein Bild, das jedem gefällt...

    Vielleicht so etwas
    Skeiron
    Der Mac heiligt die Mittel.
  • Original von scaramangado
    Ich wollte damit zum Ausdruck bringen, dass ich keinen Sinn darin sehe, dass Apple NSWorkspace nicht in das Foundation Framework gesteckt hat. Gerade für diesen bereich, wäre das sehr sinnvoll...

    PS: Vielleicht skaliere ich ja mal ein Bild, das jedem gefällt...


    OK: Ich nehme an das liegt daran, dass zum erhalten von diesen Distributed Notifications nicht unerheblicher Setup erforderlich ist -- den NSApp erledigt.

    Und schon haben wir ein Beispiel, warum eine deamon App "voll" Cocoa sein muss. Wie gesagt, mit LSBackgroundOnly kannst Du sie verstecken.

    Alex
    The only thing that really worried me was the ether.
  • Original von below
    Original von scaramangado
    Ich wollte damit zum Ausdruck bringen, dass ich keinen Sinn darin sehe, dass Apple NSWorkspace nicht in das Foundation Framework gesteckt hat. Gerade für diesen bereich, wäre das sehr sinnvoll...

    PS: Vielleicht skaliere ich ja mal ein Bild, das jedem gefällt...


    OK: Ich nehme an das liegt daran, dass zum erhalten von diesen Distributed Notifications nicht unerheblicher Setup erforderlich ist -- den NSApp erledigt.

    Und schon haben wir ein Beispiel, warum eine deamon App "voll" Cocoa sein muss. Wie gesagt, mit LSBackgroundOnly kannst Du sie verstecken.

    Alex


    Wäre es eine Distributed Notification, könnte ich einen Daemon als Foundation-Tool schreiben, warum Apple da ein weiteres Notification Center verwendet ist mir auch schleierhaft, aber die werdens wohl wissen...
    Skeiron
    Der Mac heiligt die Mittel.
  • So, bis jetzt läuft alles wie es soll, der Daemon kann meine App starten, die App installiert den Daemon beim ersten Start, ABER ein Problem habe ich noch. Ich kann den Daemon nicht automatisch starten lassen...
    Ich habe schon diese Plisten angelegt und in die Library kopiert, aber starten tut da nichts.
    (Am liebsten wärs mir, wenn die App nur bei dem User startet, der den Daemon installiert hat...)

    Wie muss die Plist genau aussehen, und wo muss sie hin? Muss noch mehr gemacht werden?

    Danke im Voraus.
    Skeiron
    Der Mac heiligt die Mittel.
  • Original von scaramangado
    (Am liebsten wärs mir, wenn die App nur bei dem User startet, der den Daemon installiert hat...)

    Das muss eigentlich klappen, wenn du die Plist in ~/Library/LaunchDaemons/ legst. Aussehen muss die wie die üblichen Launchd-Scripts, kannst einfach z.B. das vom Apachen (org.apache.httpd.plist) kopieren und abändern. Per GUI kannst du mit "Lingon" solche Plists erstellen.
    tuppis.com/lingon/
    Widgetschmie.de • Life is too short for gadgets
  • Original von Pascal
    Original von scaramangado
    (Am liebsten wärs mir, wenn die App nur bei dem User startet, der den Daemon installiert hat...)

    Das muss eigentlich klappen, wenn du die Plist in ~/Library/LaunchDaemons/ legst. Aussehen muss die wie die üblichen Launchd-Scripts, kannst einfach z.B. das vom Apachen (org.apache.httpd.plist) kopieren und abändern. Per GUI kannst du mit "Lingon" solche Plists erstellen.
    tuppis.com/lingon/


    Die App kannte ich noch nicht. Danke.
    Ist es richtig, dass es den Ordner '~/Library/LaunchDaemons/' gar nicht gibt, sondern nur den in der "großen" Library (also '/Library/LaunchDaemons/)? Wird der Ordner genutzt wenn ich ihn neu anlege?
    Skeiron
    Der Mac heiligt die Mittel.
  • Original von scaramangado
    Ist es richtig, dass es den Ordner '~/Library/LaunchDaemons/' gar nicht gibt, sondern nur den in der "großen" Library (also '/Library/LaunchDaemons/)? Wird der Ordner genutzt wenn ich ihn neu anlege?

    Die 3 Libraries werden immer nacheinander abgearbeitet (glaub ich zu wissen), sprich wenn du den in der ~/Library anlegst wird der auch verwendet. Ich hab den allerdings auch nicht (nur LaunchAgents), wirst du verifizieren müssen. :)
    Widgetschmie.de • Life is too short for gadgets
  • Original von Pascal
    Original von scaramangado
    Ist es richtig, dass es den Ordner '~/Library/LaunchDaemons/' gar nicht gibt, sondern nur den in der "großen" Library (also '/Library/LaunchDaemons/)? Wird der Ordner genutzt wenn ich ihn neu anlege?

    Die 3 Libraries werden immer nacheinander abgearbeitet (glaub ich zu wissen), sprich wenn du den in der ~/Library anlegst wird der auch verwendet. Ich hab den allerdings auch nicht (nur LaunchAgents), wirst du verifizieren müssen. :)


    Die App legt die Plist in LaunchAgents ab. Ich weiß nicht, wo der Fehler in der alten Plist war, aber jetzt läuft das wie am Schnürchen...

    Danke.
    Skeiron
    Der Mac heiligt die Mittel.