Αρχάριος σε C...

Ανώνυμος (χωρίς επαλήθευση) | Κυρ, 01/13/2008 - 23:27 | 2' | 5

Μπορεί κάποιος να μου λύσει αυτό το θεματάκι που βρήκα γιατί έχω μπερδευτεί;



Γράψτε ένα πρόγραμμα σε C που με την εκτέλεσή του να δημιουργεί 4 διεργασίες-παιδιά.



Η διεργασία-πατέρας θα αρκείται στο να τυπώνει ένα μήνυμα χαιρετισμού προς το χρήστη, πριν αρχίσει τη
δημιουργία των διεργασιών-παιδιών.

Η πρώτη διεργασία-παιδί θα τυπώνει το PID της καθώς και το PID του πατέρα της στην οθόνη αλλά θα
γράφει τις πληροφορίες αυτές και σε ένα αρχείο με όνομα mypids.txt.

Η δεύτερη διεργασία-παιδί θα εμφανίζει τα περιεχόμενα του τρέχοντος καταλόγου.

Η τρίτη διεργασία-παιδί θα μετονομάζει ένα αρχείο με ορίσματα που παίρνει από τη γραμμή εντολών.

Η τέταρτη διεργασία-παιδί θα τυπώνει στην οθόνη το PID της πρώτης διεργασίας-παιδί, πληροφορία που θα
λάβει από το αρχείο mypids.txt.

Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Μέχρι που το έχεις φτάσει το πρόβλημα και που κολάς;

Κάνε αμά μπορείς ένα c/p τι έχεις γράψει μέχρι στιγμής.

οκ,τα έκανα εκτός από το παρακάτω.

Η τρίτη διεργασία-παιδί θα μετονομάζει ένα αρχείο με ορίσματα που παίρνει από τη γραμμή εντολών.

μπορεί να μου το πει κάποιος;

Οσον αφορά τα ορίσματα στην main έχω κάνει post και σε ένα ακόμη thread ασκηση με σήματα. Η εντολή που θα χρειαστείς για τα files θα είναι σίγουρα αρχικά η fopen (test) με παραμετρο r για το υπάρχον αρχείο (μόνο read) ΙΔΕΑ "Με μια while θα μεταφέρεις τα περιεχόμενα του μέσω ενός πίνακα χαρακτήρων πχ buf[256]" και στη συνέχεια με την fopen με παραμετρο a για να κάνει write το buf στο νέο αρχείο (mirrortest)Αν έχεις βιβλία καλό είναι βέβαια να διαβάσεις περί ορισμάτων arguments .

(program) (test) (mirrortest)

Η ΑΕΚ ειναι κυρίως ιδέα και οι ιδέες δεν αποθνήσκουν

Θα χρειαστείς τη argc(argument count) και την argv[] (argument vector). Η πρώτη κρατά τον αριθμό των ορισμάτων η δε δεύτερη τα ίδια τα ορίσματα. Πρόσεξε όμως, το argv[0] κρατά πάντα το όνομα του προγράμματος που τρέχει, εσύ θα ασχοληθείς με το argv[1] και μετά.

Άρα η main σου θα είναι κάπως έτσι:

int main(int argc, char *argv[])

Αν θες να περάσεις και έλεγχο αν ο χρήστης έχει περάσει παράμετρο στο
πρόγραμμα τότε γράψε μετά την δήλωση της main κάτι σαν και αυτό:

if(argc > 0)
{
// Εκτέλεσε τον κώδικα
}
else
{
// Error
}