Blokowanie portu szeregowego Linux

Mam problem, który próbuję rozwiązać odnośnie portu szeregowego w Linuksie. Mogę dobrze otworzyć, odczytać i zamknąć port. Chcę jednak zapewnić, że jestem jedyną osobą czytającą / piszącą z portu w danym momencie.

Pomyślałem, że zrobiono to już dla mnie po wywołaniu funkcji open (). Jednak mogę wielokrotnie wywoływać open () na tym samym porcie w moim programie. Mogę też mieć dwa wątki, które jednocześnie odczytują z tego samego portu.

Próbowałem naprawić ten problem z flock () i nadal miałem ten sam problem. Czy to dlatego, że oba wywołania systemowe pochodzą z tego samego pid, nawet jeśli z każdym zestawem otwarć i odczytów wiążą się różne deskryptory plików? Dla rekordu oba wywołania open () zwracają poprawny deskryptor pliku.

W rezultacie zastanawiam się, czy jest jakiś sposób, w jaki mogę rozwiązać problem. Z perspektywy mojego programu nie jest to nic wielkiego, jeśli dwa wywołania open () powiodły się na tym samym porcie, ponieważ programiści powinni być świadomi wywoływanej przez nich wesołości. Chcę jednak mieć pewność, że kiedy otworzę port, jestem jedynym procesem z dostępem do niego.

Dzięki za pomoc.

questionAnswers(2)

yourAnswerToTheQuestion