Εμφάνιση 1-11 από 11
  1. #1
    Εγγραφή
    10-11-2005
    Περιοχή
    SunCity
    Μηνύματα
    341
    Downloads
    6
    Uploads
    0
    Ταχύτητα
    49922/4996
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΗΛΙΟΥΠΟΛΗ
    Router
    Draytek 2760n Delight
    SNR / Attn
    9(dB) / 16(dB)
    Path Level
    Interleaved
    Στο manual της fclose λέει το εξής:

    The fclose function dissociates the named stream from its underlying file or set of functions. If the stream was being used for output, any buffered data is written first, using fflush(3).

    Και στα ελληνικά βρήκα αυτό:


    H fclose( ) κάνει κάτι περισσότερο από το να ελευθερώνει απλώς το δείκτη του αρχείου.

    Γράφει οποιαδήποτε δεδομένα δεν έχουν γραφεί στο δίσκο και κάνει ένα τυπικό κλείσιμο του αρχείου στο επίπεδο του λειτουργικού συστήματος

    Πρακτικά τι γράφει η fclose στο αρχείο, όταν αυτή καλείται;
    Έχω σοβαρό πρόβλημα καθώς όταν καλείται η fclose μου χαλάει το αρχείο..
    Τι μπορώ να κάνω για να το αποτρέψω;

  2. #2
    Εγγραφή
    14-05-2004
    Περιοχή
    Σαν πας στη Καλαμάτα
    Μηνύματα
    803
    Downloads
    5
    Uploads
    0
    Ταχύτητα
    10240/1024
    ISP
    Wind
    DSLAM
    Ο.Τ.Ε. - ΚΑΛΑΜΑΤΑ
    Συνήθως όταν γράφεις σε ένα stream, χρησιμοποιείται ένας ενδιάμεσος buffer, ο οποίος γράφεται στο δίσκο όταν γεμίσει ή όταν κληθεί μια συνάρτηση τύπου flush() η οποία γράφει τα περιεχόμενα ενός buffer στον δίσκο και φυσικά αδειάζει το buffer. Το buffering γίνεται για λόγους καλύτερων επιδόσεων, καθώς τα μαζικά writes από buffers σε δίσκους είναι πολύ πιο γρήγορα από την εγγραφή byte - byte. Το αρχείο μπορεί να σου χαλάει αν στο buffer έχεις γράψει λάθος δεδομένα.

  3. #3
    Εγγραφή
    10-11-2005
    Περιοχή
    SunCity
    Μηνύματα
    341
    Downloads
    6
    Uploads
    0
    Ταχύτητα
    49922/4996
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΗΛΙΟΥΠΟΛΗ
    Router
    Draytek 2760n Delight
    SNR / Attn
    9(dB) / 16(dB)
    Path Level
    Interleaved
    Παράθεση Αρχικό μήνυμα από teacake
    Συνήθως όταν γράφεις σε ένα stream, χρησιμοποιείται ένας ενδιάμεσος buffer, ο οποίος γράφεται στο δίσκο όταν γεμίσει ή όταν κληθεί μια συνάρτηση τύπου flush() η οποία γράφει τα περιεχόμενα ενός buffer στον δίσκο και φυσικά αδειάζει το buffer. Το buffering γίνεται για λόγους καλύτερων επιδόσεων, καθώς τα μαζικά writes από buffers σε δίσκους είναι πολύ πιο γρήγορα από την εγγραφή byte - byte. Το αρχείο μπορεί να σου χαλάει αν στο buffer έχεις γράψει λάθος δεδομένα.
    Δηλαδή εγώ έχω κάνει την πατατιά κάπου και γράφω άλλα αντί άλλων και πολύ απλά τα γράφει η fclose στο τέλος;

  4. #4
    Εγγραφή
    14-05-2004
    Περιοχή
    Σαν πας στη Καλαμάτα
    Μηνύματα
    803
    Downloads
    5
    Uploads
    0
    Ταχύτητα
    10240/1024
    ISP
    Wind
    DSLAM
    Ο.Τ.Ε. - ΚΑΛΑΜΑΤΑ
    Σωστά κατάλαβες.

  5. #5
    Εγγραφή
    03-09-2003
    Περιοχή
    Όπου υπάρχει PC με δίκτυο :)
    Μηνύματα
    1.650
    Downloads
    1
    Uploads
    0
    Τύπος
    Leased
    Ταχύτητα
    10 Gbps
    ISP
    ΕΔΕΤ
    Router
    Cisco μαραφέτια
    Γενικά η fclose δεν παίζει να φταίει για το πρόβλημα... και να μην την καλέσεις εσύ, απλά θα σου πετάξει ένα warning και το σύστημα θα την καλέσει αυτόματα.

  6. #6
    Εγγραφή
    19-10-2004
    Περιοχή
    Ανάμεσα σε Sentry Gun και Dispenser
    Ηλικία
    41
    Μηνύματα
    3.446
    Downloads
    14
    Uploads
    0
    Τύπος
    FTTH
    Ταχύτητα
    930/100
    ISP
    Vodafone
    Router
    ΜΤ RB5009
    Μήπως έχεις ανοίξει το αρχείο για γράψιμο αντί για διάβασμα;
    And how can we win, when fools can be kings ISO-approved?
    [MUSE: Knights of Cydonia]

  7. #7
    Εγγραφή
    10-11-2005
    Περιοχή
    SunCity
    Μηνύματα
    341
    Downloads
    6
    Uploads
    0
    Ταχύτητα
    49922/4996
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΗΛΙΟΥΠΟΛΗ
    Router
    Draytek 2760n Delight
    SNR / Attn
    9(dB) / 16(dB)
    Path Level
    Interleaved
    Παράθεση Αρχικό μήνυμα από Πύρρος
    Μήπως έχεις ανοίξει το αρχείο για γράψιμο αντί για διάβασμα;
    Βασικά πολλά έχω κάνει. Το θέμα ήταν πως έγραφε η fclose τα δεδομένα που εγώ λάθος είχα γράψει με προηγούμενη εντολή και γενικώς τα είχα παίξει!

  8. #8
    Εγγραφή
    10-11-2005
    Περιοχή
    SunCity
    Μηνύματα
    341
    Downloads
    6
    Uploads
    0
    Ταχύτητα
    49922/4996
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΗΛΙΟΥΠΟΛΗ
    Router
    Draytek 2760n Delight
    SNR / Attn
    9(dB) / 16(dB)
    Path Level
    Interleaved
    Υπάρχει περίπτωση, αν έχω ανοίξει ένα αρχείο πχ. bla.txt στη main μου και μετά καλέσω μία συνάρτηση που ανοίγει και αυτή το bla.txt, το γράφει και πριν τερματίσει το κλείνει, να υπάρξουν προβλήματα με το προηγούμενο άνοιγμα;

  9. #9
    Εγγραφή
    03-09-2003
    Περιοχή
    Όπου υπάρχει PC με δίκτυο :)
    Μηνύματα
    1.650
    Downloads
    1
    Uploads
    0
    Τύπος
    Leased
    Ταχύτητα
    10 Gbps
    ISP
    ΕΔΕΤ
    Router
    Cisco μαραφέτια
    Δεν μου ακούγεται και πολύ καλό αυτό... Γιατί δεν κάνεις ότι είναι να κάνεις με τη συνάρτηση και το αρχείο και μόλις τελειώσει η συνάρτηση και γυρίσει στη main να το ανοίξεις πάλι από εκεί?

    Στην main το ανοίγεις για read ή για read/write? Αν θες πέτα και λίγο κώδικα σε ένα post για να μην μιλάμε έτσι γενικά

  10. #10
    Εγγραφή
    10-11-2005
    Περιοχή
    SunCity
    Μηνύματα
    341
    Downloads
    6
    Uploads
    0
    Ταχύτητα
    49922/4996
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΗΛΙΟΥΠΟΛΗ
    Router
    Draytek 2760n Delight
    SNR / Attn
    9(dB) / 16(dB)
    Path Level
    Interleaved
    Σ΄ευχαριστώ
    Ο κώδικας είναι σκέτο χάος, πίστεψέ με!
    2,700 γραμμές.. Έκανα τρελή μαλακία που δεν το debuggαρα κομμάτι κομμάτι..

  11. #11
    Εγγραφή
    15-01-2006
    Περιοχή
    Χανια
    Μηνύματα
    450
    Downloads
    5
    Uploads
    0
    Τύπος
    ADSL OTE
    Ταχύτητα
    8192/384
    ISP
    OTEnet
    DSLAM
    ΟΤΕ - ΤΖΑΝΑΚΑΚΗ
    Router
    Sagem Fast 1540WG
    SNR / Attn
    20db(dB) / 15db(dB)
    Δυο μικρες συμβουλες...
    1)Σπασε τον κωδικα. τωρα. αμεσως. σε δυο η περισσοτερα αρχεια. οχι σε 10, αλλα 2-3 θα σαι οκ.

    2)Αμα χρησιμοποιεις το ιδιο FILE * παντου, read/write (κ με λιγη προσπαθεια κ asynchronous) ,δεν εχεις προβλημα. τα buffers απλα εσυ τα ξεχνας. τα διαχειριζεται αυτοματα... αν τωρα εχεις δυο δεικτες στο ιδιο αρχειο, πρεπει να κανεις flush() καθε φορα που εναλλασεσαι μεταξυ των δυο δεικτων στον κωδικα. ετσι το δευτερο pointer θα δειχνει στο refreshed file αν και κατα πασα πιθανοτητα θα εχεις προβληματα . οποτε, ενας Pointer.

    φιλικα
    vosk
    Όλα γίνονται. Kαι όλα είναι αδύνατα.
    Εξαρτάται από το πόση τρέλα σου λείπει η σου περισσεύει…
    -vosk
    http://www.eaimproved.eu

Παρόμοια Θέματα

  1. Μηνύματα: 8
    Τελευταίο Μήνυμα: 24-08-08, 22:24
  2. Όταν η HOL σε γράφει στα .........
    Από kakavia στο φόρουμ Vodafone ADSL
    Μηνύματα: 14
    Τελευταίο Μήνυμα: 19-06-08, 11:31
  3. Γράφει DVD δεν γράφει CD
    Από paul77gr στο φόρουμ Σκληροί δίσκοι, αποθηκευτικά μέσα και λοιπά περιφερειακά
    Μηνύματα: 3
    Τελευταίο Μήνυμα: 14-07-07, 20:21
  4. Μηνύματα: 10
    Τελευταίο Μήνυμα: 07-06-06, 18:36

Tags για αυτό το Θέμα

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας