Prosty skrypt tutaj:BASH: Najlepsza architektura odczytu z dwóch strumieni wejściowych
a) stale czytać z gniazda i przechowywać wartości w tablicy asocjacyjnej
b) stale odczytywać wartości ze standardowego wejścia i odpowiedzi t/f, jeśli już istnieją w tablicach asocjacyjnych, to są przypadkowe zdarzenia, nie są w żaden sposób powiązane.
Sztuką jest dostęp do tablicy z obu podprocesów (gdyż wprowadzenie procesu w tle ikra go jako podproces)
myślę za najlepszą strategię i wystąpić kilka pomysłów, ale zastanawiam się, czy ktoś ma nic lepszego na myśli:
1) przekierować wejście od gniazda do stdin jako podproces i obsługiwać zarówno wejść w jednej pętli while (rozmiary danych są małe, < 30 znaków, więc myślę, że pozostaną one atomowy ?).
2) odczytać gniazdo, a następnie STDIN z małymi (0,1?) Wartościami limitu czasu odczytu, aby naśladować nieblokujące wejścia/wyjścia.
3) AKTUALIZACJA: zapisz dane gniazda do pliku (faktycznie drugi proces zapisz go bezpośrednio do pliku), a następnie za każdym razem, gdy pojawi się żądanie sprawdzenia, czy wartość istnieje, przetwórz wpisy w pliku, dodanie ich do tablicy (użyj blokady pliku).
Wygląda na to, że masz odpowiedni pomysł. Czy jest jakiś powód, aby zrobić to w bashie, w przeciwieństwie do innego języka? – Slartibartfast
Dobre pytanie. Nie, nie ma żadnego powodu, aby używać bash w innym języku. Bash jest prosty i mały, to jedyny powód (i mam 5 innych skryptów basha wykonujących podobne zadania uwierzytelniania/rejestrowania/zarządzania użytkownikami, więc miło jest utrzymywać jednolitą platformę) –