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

διεργασία


efefef

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

Βασικά η εντολή είναι gcc. Για να κάνεις compile το foo.c δίνεις gcc -o foo.c foo όπου foo το εκτελέσιμο αρχείο που θα παραχθεί και μπορεί να έχει ότι όνομα θέλεις. Όλα αυτά εφόσον ο GNU C Compiler υπάρχει στο σύστημα σου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ασχολήθηκες καθόλου και κόλλησες;

Μέχρι στιγμής δείχνεις ότι δε σε ενδιαφέρει να μάθεις 2 πράγματα αλλά να ξεμπερδέψεις με την εργασία.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

efefef διάβασες καθόλου το man page της write?

 

Τέλος πάντων, κάνε τα εξής στην αρχή του προγράμματος:

>FILE *fd = fopen ("path/to/your/file", "w");
if (fd == NULL) {
   printf ("Error opening file. I will stop here\n");
   exit (1);
}

 

και μετά κάθε φορά που θα θέλεις να γράψεις στο αρχείο αντί για printf κάνε:

 

write (fd, "αυτό που θες να γράψεις το αρχείο εδώ", ο αριθμός των bytes αυτού που θές να γράψεις εδώ)´

Στο τέλος κάνε close (fd);

Πρέπει να μάθεις πόσα bytes είναι αυτό που θές να γράψεις (δηλαδή πόσα bytes είναι ένα char και πόσα ένας int στη C), και πώς θα τα μετράς. Παραπάνω δεν θα σου πώ γιατί πρέπει να πάω και δουλειά :-).

 

Βοηθήματα πάντως: man 3 sprintf για να μάθεις πώς βάζεις 2 δυναμικά data types σε ένα.

man 3 strlen για να δεις πώς παίρνεις το μέγε8ος ενός char *

και τέλος αν δεν θες να καρφώνεις τιμές στα μεγέθη για τα string σου, μάθε τι είναι pointer και δες την man 3 malloc ώστε να μπορείς όταν μέσα στον κώδικά σου φτάσεις στο σημείο να ξέρεις ακριβώς το μέγεθος αυτού που θέλεις να γράψεις, να πεις στο σύστημα να σου κρατήσει τόσο μνήμη όση χρειάζεσαι για να αποθηκευτεί αυτό το πράγμα. Επίσης το man 3 free δεν θα ήταν άσχημο.

Και βάλε και κανένα error check στον κώδικα. Όλες αυτές οι functions που θα χρησιμοποιήσεις επιστρέφουν κάποιες τιμές όταν τις τρέξεις, δεν τις επιστρέφουν για πλάκα, κάτι σημαίνουν. Θα σε βοηθήσει πολύ στο να δεις αν υπάρχει κάποιο πρόβλημα όσο θα φτιάχνεις τον κώδικα.

Αυτά και καλή συνέχεια.

 

PS. το σημαντικότερο ξέχασα. Μάθε αν όταν ένα process ανοίγει ή φτιάχνει ένα αρχείο, αν τα permissions να διαβάσεις και να γράψεις σε αυτό κληρονομούνται στα child processes μέσω της fork ;)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τιποτα Nullscan για μενα πρέπει να του δωσεις τιμωρια να γραψει 10 scripts με την write() και να προσελθει με τον κηδεμονα στις 8.00 sto γραφειο των καθηγητων

:mrgreen:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

>The child inherits copies of the parent's set of open file descriptors. 
Each file descriptor  in  the  child refers to the same open file description 
(see open(2)) as the corresponding file descriptor in the parent. This means 
that the two descriptors share open file status flags, current file offset, 
and signal-driven  I/O attributes (see the description of 
F_SETOWN and F_SETSIG in fcntl(2)).

 

Γεια σου NullScan. Τι έγινε; Καθάρισες με την Intel;

 

Για την clone(2) τι γνώμη έχεις;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι ας πούμε ότι προς το παρόν ξεμπέρδεψα με αυτούς.

Ναι δεν διαφωνώ για την clone αλλά επειδή είμαι επιφυλακτικός για την ασφάλεια του συστήματος όταν αποφασίζεις να επιτρέψεις το inheritance των permissions σε οτιδήποτε (iopl κτλ.) θα πρότεινα σαν καλύτερη λύση το να ανοιχτεί το αρχείο με τέτοιο τρόπο ώστε να μπορούν να γράψουν πολλά processes σε αυτό. Για περισσότερες πληροφορίες στο man 3 open hint: O_SYNC

Εγκυκλοπαιδικά όλα αυτά βέβαια γιατί για το πνεύμα της εργασίας φαντάζομαι είναι λίγο off...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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