TOP
SSV Software Systems Registrieren  Registrieren
Einloggen, um private Nachrichten zu lesen  Einloggen, um private Nachrichten zu lesen
Startseite FAQ Suchen Mitglieder Profil  Login 
SSV Support-Forum
autostart.sh wird unvollständig ausgeführt

 
Neues Thema eröffnen   Neue Antwort erstellen    SSV-Forum Foren-Übersicht >>> ADNP/9200
<<< Vorheriges Thema - Nächstes Thema >>>  
Beiträge der letzten Zeit anzeigen:   
Autor Nachricht
hne



Anmeldedatum: 11.07.2008
Beiträge: 149
Wohnort: Hannover

BeitragVerfasst am: 11.05.2011, 14:22    Titel: autostart.sh wird unvollständig ausgeführt Antworten mit Zitat

Es kommt vor, daß der die Datei autostart.sh nicht komplett abgearbeitet wird, weil sich die Ausgabe-Konsolen ins Gehege kommen.

Dazu sei vorweg erinnert, daß die Datei /flash/autostart.sh vom Boot-Prozess bereits im Hintergrund gestartet wird.

Wenn man innerhalb des Scriptes autostart.sh zu viele Meldungen auf der Konsole ausgibt, oder gar noch Verzögerungen hat und dann etwas per echo ausgibt, dann kollidieren die Ausgaben aus dem autostart.sh (oder aus Programmen, die im autostart.sh gestartet werden) mit dem Login-Prompt. Der Script autostart.sh wird ohne Fehlermeldungen abgebrochen.

Um das zu vermeiden, sollte man möglichst keine Meldungen innerhalb des Scripts autostart.sh machen und auch die Programme, welche darüber gestartet werden, sollten keine Meldungen ausgeben. Ein echo am Anfang von autostart.sh funktionierte bei Tests noch, sollte aber nur in der Entwicklungsphase benutzt werden.

Eine optimale autostart.sh:
Code:
#!/bin/sh

cd /flash
exec /flash/programm </dev/null >/dev/null 2>&1


Für Debugging und zu Testzwecken kann man sich die Melungen in eine Log-Datei schreiben:
Code:
#!/bin/sh

echo "autostart.sh gestartet"
cd /flash
exec /flash/programm </dev/null >/var/log/autostart.log 2>&1


Noch besser ist es, wenn das gestartatete Programm sich selber in den Daemon-Modus versetzt, und sich selbsständig von der aktuellen Konsole abkoppelt. In einem C-Programm sind dazu folgende Aufrufe notwendig: (auch als "daemonize" bezeichnet):
Code:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
...
pid_t mypid;
mypid = fork();
if (mypid != 0)
   exit(0); /* parent exit */

close(0);
close(1);
close(2);
open("/dev/null", O_RDWR | O_NONBLOCK);
open("/dev/null", O_RDWR | O_NONBLOCK);
open("/dev/null", O_RDWR | O_NONBLOCK);

_________________
Henry Nestler
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    SSV-Forum Foren-Übersicht >>> ADNP/9200 Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht teilnehmen.

SSV Software Systems GmbH

Dünenweg 5
30419 Hannover

Tel.: +49(0)511 / 40 000-0
Fax: +49(0)511 / 40 000-40

sales@ssv-embedded.de

© 2018 SSV Software Systems GmbH. Alle Rechte vorbehalten.

ISO 9001:2015