Dateideskriptoren werden beschädigt, wenn das Programm im Hintergrund ausgeführt wird

Dateideskriptoren werden beschädigt, wenn das Programm im Hintergrund ausgeführt wird

Ich habe ein Programm für ein eingebettetes Linux-System (Petalinux) geschrieben. Es läuft einwandfrei, wenn es vom Terminal oder TCF-Debugger gestartet wird. Ich möchte jedoch, dass es beim Systemstart ausgeführt wird, daher verwende ich den Start-Stop-Daemon. Dies hat teilweise funktioniert, aber jetzt stoppt es vollständig. Was ich sehe, ist, dass das Programm korrekt startet, einige Dateien für den GPIO- und I2C-Zugriff öffnet und ordnungsgemäß mit ihnen arbeiten kann. Dann, nach etwa 8 Sekunden, sind diese Dateideskriptoren plötzlich fehlerhaft (Errno 9) und die Software stürzt ab oder funktioniert zumindest nicht mehr.

Weitere Tests ergaben, dass dies auch passiert, wenn das Programm über ein Bash-Skript im Hintergrund gestartet wird:

#!/bin/bash
/home/user/myApp.elf &

In diesem Skript funktioniert es, es nicht in den Hintergrund zu setzen. Es funktioniert auch, das Programm direkt vom Terminal aus im Hintergrund zu starten. Ich habe es direkt über ein /etc/profile.d-Skript gestartet, was eher ein Workaround als eine Lösung ist.

Ich hatte schon vorher eine Art Speicherüberlauf oder -beschädigung vermutet, aber die direkte Ausführung des Programms hat bisher immer funktioniert, während es beim Starten im Hintergrund immer fehlgeschlagen ist, was für mich nicht nach einem offensichtlichen Speicherproblem riecht. Gibt es also irgendeine Linux-Magie oder Merkwürdigkeiten, die mit Prozessen im Hintergrund passieren, deren Dateideskriptoren sich ändern oder modifiziert werden? Gibt es eine Speicherverwaltungssache, die ich nicht richtig handhabe? Gibt es einen Systemaufruf, den ich nicht richtig handhabe?

verwandte Informationen