Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα σε ολους...

Εχω μια απορια..Ποτε στην C χρησιμοποιουμε ως μεσο αποθηκευσης αρχεια, ποτε τους αγωγους και γιατι??Μπορειτε να δωσετε ενα παραδειγμα?

Δημοσ.

Καλησπερα σε ολους...

Εχω μια απορια..Ποτε στην C χρησιμοποιουμε ως μεσο αποθηκευσης αρχεια, ποτε τους αγωγους και γιατι??Μπορειτε να δωσετε ενα παραδειγμα?

 

Εννοεις τα pipes που φτιάχνουμε με την pipe() ?

 

http://stackoverflow.com/questions/6977561/pipe-vs-temporary-file

Δημοσ.

Νε...τα pipes εννοω.Ξερω πως λειτουργουν αλλα (εμπειρικα) ΠΟΤΕ χρησιμοποιουμε αυτα κ ποτε τα αρχεια(ειχα εργασια οπου επρεπε να υλοποιησω 1 φορα μεσω pipes και την αλλη μεσα απο αρχεια)

Δημοσ.

Είναι διαφορετικές "τεχνολογίες". 

 

Σκέψου τα pipes ως αυτό που λέγονται. Δηλαδή, σωλήνες. Τους συνδέεις μεταξύ δύο διαφορετικών διεργασιών, δηλαδή φαντάσου τις διεργασίες/προγράμματα ως τον νεροχύτη σου και την αποχέτευση. Αυτά τα δύο πρέπει να συνδέσεις με ένα σωλήνα. Έτσι, όπως ακριβώς ο νεροχύτης δίνει ροή νερού προς την αποχέτευση μέσα από τον σωλήνα, έτσι θα δίνει η μια διεργασία δεδομένα στην άλλη. 

 

Μία συνήθης χρήση είναι για το πέρασμα real-time δεδομένων από μία διεργασία σε μία άλλη, π.χ. audio streamer σε δίκτυο. Δηλαδή, μία εφαρμογή που τρέχει και περιμένει να λάβει δεδομένα πρέπει με κάποιο τρόπο να τα περνάει real-time στην κάρτα ήχου και η κάρτα ήχου να τα διαβάζει real-time για να μην χαθεί τίποτα από "γέμισμα" του σωλήνα. 

Δημοσ.

Χωρίς να είναι set in stone, αρχεία χρησιμοποιείς όταν θέλεις να αποθηκεύσεις κάτι (έστω και αν αυτό είναι για λίγο). Ίσως αυτό το αρχείο να το διαβάσει μετά μια εφαρμογή ίσως όχι.

 

Όπως είπε ο Timon, pipes χρησιμοποιείς για να περάσεις κάτι από μία process σε μια άλλη σε πραγματικό χρόνο. Την ίδια στιγμή που γράφει η process A στο pipe την ίδια ώρα το βλέπει η process B.

 

Αν έχεις δουλέψει κάποιο κέλυφος σε *nix, τότε σίγουρα έχεις χρησιμοποιήσει pipes για να τροφοδοτήσεις την έξοδο μιας εντολής σε μια άλλη. πχ:

% ls /usr/bin | less
% grep -r τάδε /usr/share | less
% find τάδε | xargs rm
Το ίδιο πράγμα θα μπορούσαμε φυσικά να επιτύχουμε και με τη χρήση αρχείων ως εξής:

 

% ls /usr/bin > /tmp/προσωρινό-αρχείο
% less /tmp/προσωρινό-αρχείο
% rm /tmp/προσωρινό-αρχείο
Με αυτό τον τρόπο όμως δεν κερδίζουμε τίποτα γιατί η δουλειά μας απαιτεί περισσότερο κόπο και χρόνο. Με το pipe κερδίζουμε ότι βρίσκεται στη μνήμη (μπορεί να έχουμε αργό αποθηκευτικό χώρο ή μέσο το οποίο έχει περιορισμένο αριθμό εγγραφών δεδομένων οπότε δεν το φθείρουμε άδικα) και επίσης η διαδικασία γίνεται σε πραγματικό χρόνο πράγμα το οποίο να είναι απαραίτητο όπως στο σενάριο που είπε ο Timon και φαίνεται πιο καλά γιατί θέλουμε pipes.
  • Like 2

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...