Probleme de fopen() et de kill
Bonjour à tous,
Je viens vers le forum car mes recherches ne m'ont pas apportées de grand résultats.
J'ai développé une application console en C sous Raspberry 3B+ (Raspbian)
Cette application lit des donnée en I2C, compile les données, et les écrit dans un fichier .txt sur un SSD.
Jusque là, tout va bien.
Comme cette application devrait tourner en continu, afin de parer au coupure de courant, plantage et autres aléas
informatique, j'ai installer l'application au démarrage de rasbian.
Donc à chaque démarrage, l'application démarre et tourne en tâche de fond (elle n'est pas visible dans une console.
(je sais pas encore comment faire.....:oops: mais je cherche..........)
Si je modifie l'application (avec Geany), je la compile et pour la tester, j’arrête le processus qui tourne
(en connaisant son PID avec pidof xxx puis kill xxx)
Puis je relance l'application dans une console avec ./Oled (nom de l'application)
Seulement, lorsque l'application tente d'ouvrir le fichier texte, la fonction fopen() retourne un NULL .
Si j’empêche le démarrage en tâche de fond, que je lance l'application directement depuis une console,
je peux l’arrêter (ctrl-c) et la redémarrer sans problème.
Je n'ai jamais ce problème de fichier.
Mes recherche me disent que "kill xxx" sans spécifier de signal, envoi le signal SIGTERM qui demande au processus de terminer
toutes les fonction proprement (donc de nettoyer les mémoire et de fermer les FILE* ???)..
Mais cela ne fonctionne pas (bien ??).
Pour info ,
un redémarrage de rasbian est necessaire pour solutionner le problème..(Heureusement:?
le disque est monter comme suit :
/dev/sda2 on /home/pi/ssdkesu type ext3 (rw,relatime)
Faut-il intégrer une gestion des signaux dans l'application ?
Faut-il envoyer un autre signal avec KILL ?
Comment arreter une application qui tourne en tache de fond autrement que par KILL?
Si quelqu'un avait une suggestion
Merci d'avance
Michel