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

Μια μικρή εξήγηση για τα pipes


pagratios

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

Δημοσ.

Μπορεί κάποιος να μου εξηγήσει τα pipes?

Όταν ας πούμε κάνουμε την ls| sort τρέχει πρώτα την ls το απότέλεσμα της στην fd[write] και μετά παίρνει η sort από την fd[read] και βγάζεις το αποτέλεσμα στην stdout!

Όπως έγραψα παραπάνω λειτουργεί ή κάνω λάθος? Βασικά θέλω να μάθω αν πρέπει να τελειώσει η ls για να αρχίσει η sort ή αν γίνεται παράλληλα!

 

Ευχαριστώ εκ το προτέρον

 

Αν το θέμα είναι σε άλλη κατηγορία παρακαλώ να το αλλάξουν οι διαχειριστές.

Δημοσ.

Τελιώνει το ένα και μετά κάνει το άλλο. Το pipe() είναι κάτι άλλο αν κοιτούσες αυτό. Οπότε ναι, input από stdin και output στο out. Άν κάτι δεν θες να περάσει από το pipe το βγάζεις στο stderr.

 

Έχει πλάκα που δίνεις δικαιώματα στους διαχειρηστές που ήδη γνωρίζουν ότι έχουν.

Δημοσ.

Μπορεί κάποιος να μου εξηγήσει τα pipes?

Όταν ας πούμε κάνουμε την ls| sort τρέχει πρώτα την ls το απότέλεσμα της στην fd[write] και μετά παίρνει η sort από την fd[read] και βγάζεις το αποτέλεσμα στην stdout!

Όπως έγραψα παραπάνω λειτουργεί ή κάνω λάθος? Βασικά θέλω να μάθω αν πρέπει να τελειώσει η ls για να αρχίσει η sort ή αν γίνεται παράλληλα!

 

Ευχαριστώ εκ το προτέρον

 

Αν το θέμα είναι σε άλλη κατηγορία παρακαλώ να το αλλάξουν οι διαχειριστές.

Δημοσ.

Βασικά μου είπανε ότι τρέχουν παράλληλα η ls και η sort στο

ls | sort, είναι λάθος αυτό?

 

Τα UNIX σε τι γλώσσα είναι προγραμματισμένα!

Δημοσ.

Το pipelining γίνεται παράλληλα, είμαι 99% σίγουρος γι' αυτό. Μας το είπανε στη σχολή. Ελπίζω να μην έχω ξεχάσει τόσο εύκολα...

 

Την ώρα που εκτελείται μια εντολή, τροφοδοτεί την επόμενη και πάει λέγοντας...

 

Δες τις πρώτες 2 σειρές link

 

Μάλλον δεν είδα τ' ότι υπάρχουν 2 threads. Και προφανώς έδωσα λάθος απάντηση...

Δημοσ.
Το pipelining γίνεται παράλληλα, είμαι 99% σίγουρος γι' αυτό. Μας το είπανε στη σχολή. Ελπίζω να μην έχω ξεχάσει τόσο εύκολα...

 

Την ώρα που εκτελείται μια εντολή, τροφοδοτεί την επόμενη και πάει λέγοντας...

 

Δες τις πρώτες 2 σειρές link

 

Μάλλον δεν είδα τ' ότι υπάρχουν 2 threads. Και προφανώς έδωσα λάθος απάντηση...

 

τι έχεται να πείται για αυτό. Το άνοιξα 2 φορές και ο φίλος απάντησε αλλού

Δημοσ.

Μπερδεύεις τον χαρακτήρα pipe με την συνάρτηση pipe. Έχουν το ίδιο όνομα γιατί μοιάζουν σε αυτό που κάνουν, interprocess communication, αλλά δεν είναι το ίδιο. Ο χαρακτήρας κάνει αυτό που σου είπα, δηλαδή δίνει το output μίας διεργασίας ως input σε μία άλλη, το άλλο pipe άσ' το.

Δημοσ.

Βασικά σε μία εργασία έφτιαξα ένα shell με και όταν μου δίναναι το ls | sort εκτελούσα την pipe(). Κάποιο από τα 2 εκττελείται παράλληλα ή και στα 2 τελειώνει η πρώτη εντολή και παίρνει στην είσοδο η δεύτερη εντολή τα αποτελέσματα της πρώτης?

Δημοσ.

pipe() σε shell script δεν ξέρω. Αν εννοείς την pipe() στη C τότε δεν κάνει τίποτα από τα 2, απλά είναι ένα μέσο για να εποικοινωνίσουν 2 διεργασίες.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...