dimitrispa Δημοσ. 11 Μαΐου 2008 Share Δημοσ. 11 Μαΐου 2008 Μου έχουν βαλει αυτή την εργασια στα λειτουργηκα: Να κατασκευάσετε ένα πρόγραμμα στο οποίο μια διεργασία αφού ελέγχει την τιμή της προτεραιότητάς της, αν αυτή είναι μικρότερη από το 8, τότε θα την υποβαθμίζει σε 8. Έπειτα ελέγχει ποιος είναι ο βασικός της κατάλογος, στη συνέχεια βρίσκει όλες τις διεργασίες που τρέχουν στο σύστημα και αποθηκεύει τα δεδομένα σε ένα αρχείο με όνομα processes.txt στο βασικό κατάλογό της. Στη συνέχεια δημιουργεί μία νέα διεργασία. Η θυγατρική διεργασία θα ανοίγει το αρχείο processes.txt και θα διαβάζει τις ταυτότητες των διεργασιών. Στη συνέχεια προσπαθεί να τερματίσει τις διεργασίες αυτές και αναφέρει αν ο τερματισμός πέτυχε ή όχι και για ποια διεργασία. Στο διάστημα αυτό η πατρική της διεργασία περιμένει την ολοκλήρωσή της. Αυτό το οποίο έχω φτιαξει είναι το εξεις: #include<sys/resource.h> #include<unistd.h> #include<stdio.h> #include <stdlib.h> #include <string.h> #include <signal.h> int main(void){ FILE *fp; char *homefolder; int a,pr,kpr,paidi; if(getpriority(PRIO_PROCESS,0)<8){ a=setpriority(PRIO_PROCESS,0,8); } if(a==0){ printf("H upovatmisi petyxe %d\n",a); } else{ printf("H upovatmisi apetyxe %d\n",a); } homefolder=getenv("HOME"); printf( "%s\n",homefolder); system("ps -A -o pid= > ~/processes.txt"); paidi=fork(); if(paidi<0){ printf("apotyxia dimiourgias paidiou\n"); exit(0); } else if(paidi==0){ strcat(homefolder,"/processes.txt"); fp=fopen("processes.txt","r"); if(fp==NULL){ printf("Sfalma kata to anoigma tou processes.txt gia anagnosi. Exodos...\n"); exit(0); } while(!feof(fp)){ fscanf(fp,"%d",&pr); kpr=kill(pr,SIGKILL); if(kpr==0) { printf("Petyxe to kill tis diergasias %d ",pr); printf("\n"); } else if(kpr<0){ printf("Apetyxe to kill %d ",pr); printf("\n"); } } } wait(0); } Αλλα δεν ξέρω αν είναι σωστο.Οποιος μπορεί ας το κοιτάξει και ας μου απαντήσει. ευχαριστω Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.