#raspberrypi #raspbian #linux #programowanie
Mój program łączy się z portem COM na Raspbianie i tworzy plik /var/lock/LCK..ttyS0. W razie niepoprawnego zamknięcia programu (a tak go wyłączam, po prostu "poweroff" przez SSH) ten plik zostaje i po resecie już się nie łączy z portem (a program jest w autostarcie), bo " Permission error while locking the device (ttyS0)". Nie bardzo mogę usuwać ten plik z programu, bo nie chcę mu dawać praw administratora. Czy te locki w /var/lock nie powinny znikać po zamknięciu systemu? Jak zrobić żeby to robiły?
Mój program łączy się z portem COM na Raspbianie i tworzy plik /var/lock/LCK..ttyS0. W razie niepoprawnego zamknięcia programu (a tak go wyłączam, po prostu "poweroff" przez SSH) ten plik zostaje i po resecie już się nie łączy z portem (a program jest w autostarcie), bo " Permission error while locking the device (ttyS0)". Nie bardzo mogę usuwać ten plik z programu, bo nie chcę mu dawać praw administratora. Czy te locki w /var/lock nie powinny znikać po zamknięciu systemu? Jak zrobić żeby to robiły?
- Najlepsze
- Wszystkie komentarze







Aby to poprawić musisz w swojej aplikacji przechwycić sygnały SIGTERM i SIGHUP, a następnie zakończyć poprawnie działanie programu.
Zobacz jak ja to robię u siebie (też program w C++ i Qt) w linii 72, w pliku main.cpp:
https://github.com/sin2000/zdownloader/blob/master/src/zdownloader/src/main.cpp
@s_theCapt: +1 dla tego pana wyżej
pokaż
ls@s_theCapt: kto tworzy ten plik?
@szokiniedowierzanie: takiego czegoś szukałem, dziękuję!
Komentarz usunięty przez autora
@s_theCapt: sigkill i tak nigdy nie złapiesz, ten lock domyślnie powinien się tworzyć w /run/lock i po restarcie powinien zniknąć a w /var/lock jest symlink, coś masz zepsute, przy poprawnym wyjściu z aplikacji powinieneś tylko to złapać i zamknąć port.
daj wyniki poleceń
ls -al /var/locki
ls -al /run/lock
i ps -aux
zrób to jak odpalisz appke i jak zrestartujesz system i najlepiej wrzuć na pastebina czy cuś
Komentarz usunięty przez autora
@s_theCapt: co jeśli plik będzie prawidłowo utworzony i port rzeczywiście będzie zablokowany?
To niezłe działanie u klienta xD
@s_theCapt: dlatego uważam, że ten plik jest tworzony/przechowywany w dziwny sposób, cały /run to tmpfs i jest trzymany w ramie/swapie, po restarcie powinno być pusto.
https://www.networkworld.com/article/3403023/exploring-run-on-linux.html