Chcę ciągle wykonywać program C na moim komputerze. Nie musi jednak "robić" niczego, dopóki nie utożsamia się z event
.Czy istnieje odpowiedni sposób na napisanie programu, który działa nieprzerwanie?
Na przykład program C można zapisać przy pomocy pętli do while
, która nigdy nie zostanie zamknięta. Wewnątrz pętli może występować warunek if else
, który nasłuchuje na event
. Powiedzmy "if
plik istnieje w katalogu, następnie otwórz plik i zrób coś, else
zrób sobie przerwę i sleep(60)
na minutę".
Oczywiście ta funkcja może być realizowana poza programem C. Mógłbym uruchomić ten sam pomysł powyżej w skrypcie powłoki ... "if
plik istnieje w katalogu, a następnie uruchomić program C, else
zrobić sobie przerwę i sleep(60)
na minutę". Mógłbym też napisać skrypt powłoki, aby wykonać program C, jeśli plik istnieje i uruchomić program powłoki z crontab
lub innym programem planującym.
Jeśli nie uruchomię sleep
lub ustawię crontab
na bardzo wysoką częstotliwość, to oczywiście mój czas odpowiedzi ulegnie poprawie. Chociaż byłoby to idealne, mam wątpliwości, że jest to bezpieczny i właściwy sposób, aby to zrobić. Zasadniczo chcę, aby mój program był zawsze gotowy do działania ... pojawia się event
, do dzieła!
Ponieważ nigdy nie zaimplementowałem takiego programu, moje pytanie brzmi, czy istnieje odpowiedni i bezpieczny sposób na stworzenie "detektora zdarzeń" obsługującego ten typ funkcjonalności? C vs podejście powłoki? Inne pomysły?
To zależy od wydarzenia. 'man select' oraz' man epoll'. –
Jeśli chodzi o ogólne oglądanie katalogu, a nie o istnienie określonego pliku, zobacz także np. ['man inotify'] (http://man7.org/linux/man-pages/man7/inotify.7.html). Może być użyty do sprawdzenia, czy określone pliki zostały utworzone w katalogu. –
@WilliamPursell Trzymanie się z kontekstem mojego pytania, wydarzenie byłoby "istnieniem pliku". Sprawdzę każdą z nich. – ThatsRightJack