TOP
SSV Software Systems Register  Register
Log in to check your private messages  Log in to check your private messages
Startseite FAQ Search Mitglieder Profile  Log in 
SSV Support-Forum
autostart.sh wird unvollständig ausgeführt

 
Post new topic   Reply to topic    SSV-Forum Forum Index >>> IGW/920
<<< Previous topic - Next topic >>>  
Display posts from previous:   
Author Message
hne



Joined: 11 Jul 2008
Posts: 210
Location: Hannover

PostPosted: 12.05.2011, 16:28    Post subject: autostart.sh wird unvollständig ausgeführt Reply with quote

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
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    SSV-Forum Forum Index >>> IGW/920 All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

SSV Software Systems GmbH

Dünenweg 5
30419 Hannover

Fon: +49(0)511  ·  40 000-0
Fax: +49(0)511  ·  40 000-40

sales@ssv-embedded.de


Impressum    ·    Datenschutz    ·    AGB

© 2023 SSV SOFTWARE SYSTEMS GmbH. Alle Rechte vorbehalten.

ISO 9001:2015