firewalker Δημοσ. 13 Ιανουαρίου 2007 Share Δημοσ. 13 Ιανουαρίου 2007 Έχω ένα πρόγραμμα κονσόλας στο οποίο δεν λειτουργεί η ανακατεύθυνση. Εξηγούμαι: Δίνω program_name -arguments > text.txt Η έξοδος του προγράμματος εμφανίζεται στην οθόνη αλλά το αρχείο που δημιουργείται είναι άδειο. Στον κώδικα του προγράμματος είδα ότι για να τυπώνει χρησιμοποιεί την εντολή fprintf(stderr, "message \n");. Αν την αλλάξω σε fprintf(stdout, "message \n"); και το κάνω compille τότε η ανακατεύθυνση λειτουργεί κανονικά. Υπάρχει τρόπος με συνδυασμό εντολών να δουλέψει η ανακατεύθυνση χωρίς να πειράξω όλο τον κώδικα (είναι λίγο μεγάλος...); Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
apoikos Δημοσ. 13 Ιανουαρίου 2007 Share Δημοσ. 13 Ιανουαρίου 2007 program_name -arguments > text.txt 2>&1 Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 14 Ιανουαρίου 2007 Μέλος Share Δημοσ. 14 Ιανουαρίου 2007 program_name -arguments > text.txt 2>&1 Σε ευχαριστώ. Μπορείς να μου εξηγήσεις λίγο τι ακριβώς κάνει το 2>&1; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
apoikos Δημοσ. 14 Ιανουαρίου 2007 Share Δημοσ. 14 Ιανουαρίου 2007 Κάθε πρόγραμμα ανοίγει κάποια αρχεία, στα οποία αποδίδονται αριθμοί (file descriptors). Οι file descriptors 1 και 2 αντιστοιχούν πάντοτε στην stdout και την stderr, αντίστοιχα. H stdout είναι η standard output, δηλαδή η κανονική έξοδος του προγράμματος με αυτά που θες να δεις, και το '> text.txt' ισοδυναμεί με '1>text.txt'. Η stderr (ή standard error) από την άλλη είναι για να γράφει το πρόγραμμα τα μηνύματα λάθους (κυρίως) ώστε, ακόμα και αν κάνει κάπου redirect ο χρήστης την έξοδο, αφενός να βλέπει ακόμα τα μηνύματα αν κάτι πάει στραβά, αφετέρου να μην του «μολύνουν» να μηνύματα λάθους την έξοδο του προγράμματός του. Το 2>&1 λοιπόν κάνει redirect την stderr στην stdout, οπότε και τα μηνύματα λάθους γράφονται τελικά στο text.txt. Για περισσότερες πληροφορίες: http://tldp.org/LDP/abs/html/io-redirection.html Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 14 Ιανουαρίου 2007 Μέλος Share Δημοσ. 14 Ιανουαρίου 2007 Ακόμη μια φορά σε ευχαριστώ. Ήσουν κατατοπιστικότατος. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.