buffering pipes

Nick Demou ndemou at gmail.com
Mon Apr 16 12:23:56 EEST 2007


έχω αυτή την εντολή:
   prog1 | prog2
υπάρχει κάποιο prog_buf με το οποίο θα μπορούσα να την κάνω έτσι:
   prog1 | prog_buf | prog2
όπου το prog_buf ΠΡΩΤΑ θα διαβάσει ΟΛΟ το output του prog1 και META θα
το στείλει στο prog2

_______________________________

ΥΓ: ορίστε και ο λόγος που το θέλω:

έχω ένα μηχανάκι το οποίο μαζεύει emails από μερικά pop accounts με το
fetchmail και τα φιλτράρει με το maildrop. Το κακό είναι ότι αν ένα
email θέλει πάνω από 5 λεπτά για να κατέβει η διαδικασία τερματίζεται
με το error

   fetchmail: SIGPIPE thrown from an MDA or a stream socket error

αυτό που συμβαίνει είναι ότι το fetchmail καλεί το maildrop και του
περνάει σιγά σιγά στο stdin καθώς ταυτόχρονα κατεβάζει από το internet
το email. Το maildrop όμως έχει ένα hardcoded timeout στα 300secs για
να επεξεργαστεί κάθε email το οποίο ξεκινά να μετρά με το που
εκτελείτε το πρόγραμμα. Δυστυχώς τα 300sec περνούν καθώς περιμένει να
διαβάσει το stdin.

Μπορώ να κάνω recompile το maildrop αλλάζοντας το 300sec αλλά αν
υπάρχει workaround το προτιμώ από το να χαλάσω την ξεγνοιασιά του
apt-get update upgrade




More information about the Linux-greek-users mailing list