Newsgroup: it.comp.os.linux.sys
Titolo: Watchdog per programma

Ho un flusso proveniente da una camera ip che mando in play su una linux
box.
Il flusso viene letto tramite wget che lo scrive su un file fifo.
Da li viene letto dal player.
Tutto bene fin che casualmente, ogni tanto, forse per qualche problema
di rete, il tutto si blocca.
Ho visto che quando c'č il blocco, se faccio un cati del file fifo,
questo non mostra nulla.
Allora ho pensato di scrivermi un programma, che ogni x secondi legge il
file fifo, e se non legge dati, killa wget (che poi riparte ecc.).
Fatto il programma, mi sono accorto che quando sono nella situazione di
blocco di wget, si blocca anche il mio programma nel momento in cui fa
la Read dal file. Purtroppo non ho un timeout da passare alla funzione
di read (il programma č scritto in Free Pascal in quanto č il linguaggio
con cui sono piů pratico).
 
Ora, mi chiedevo, primo di mettermi a farlo io, se ci fosse un qualche
programma che resta in ascolto di un qualche da un'altra applicazione, e
se questo non arriva, procede a fare una qualche azione.
 
Ho visto che esiste un watchdog su linux, ma č a livello di kernel e
provoca il reboot del sistema. Un po' troppo per quello che voglio fare io.

 se questo non arriva, procede a fare una qualche azione.
 
Netcat? In teoria potrebbe essere quello che cerchi, in pratica non riesco a 
capire se sia la soluzione giusta...
 
Enrico

 Un po' troppo per quello che voglio fare io
 
http://ps-watcher.sourceforge.net/
 
 
una bomba

 una bomba
 
Sarà una bomba, ma come lo useresti nel caso di specie?
 
 
-- 
Flavio Visentin
 
Scientists discovered what's wrong with the female brain: on the left
side, there's nothing right, and on the right side, there's nothing left

 se questo non arriva, procede a fare una qualche azione.
 
Non ne conosco ma io lo farei con uno script con pv:
 
Crei un'ulteriore pipe
  mkfifo /run/wd
 
Mentre il watchdog lo metti in un altro script che monitora /run/wd
(è solo un esempio da affinare...)
 
  while true
  do
    wget -O - 
http://dominio/flusso.avi
 | pv -fr 2> /run/wd > /run/fifo
    cat /run/wd | while read rate
    do
       echo "$rate" | grep -E '\s0B/s' && killproc wget
    done
  done


 [...]
 
Ciao  Manlio

 Non ne conosco ma io lo farei con uno script con pv:
 
Interessante sto comando. Non sapevo esistesse.
Purtroppo i blocchi sono troppo frequenti.
 
A sto punto, se riuscissi a trovarlo, prenderei un "player hardware" che
mostri e basta il flusso che arriva dalla telecamera e buona notte, come
avviene con quelle analogiche.

 certo periodo di tempo è quello di usare `select`.
 
Alla fine ho usato la select, non avevo mai avuto necessità di usarla
prima d'ora. Però come scritto nell'altro post, se non è il wget è il
player o l'access point ecc. Mi fa una giornata tranquilla, poi passa
un'ora a riavviarsi di continuo.
Tutto troppo fragile.

 Tutto troppo fragile.
 
Togli di mezzo wget e la pipe.
mplayer dovrebbe essere in grado di leggere direttamente da una 
connessione di rete, ed in questo caso se qualcosa va storto hai modo più 
facilmente di risalire al problema.
 
 
Ciao  Manlio