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

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

Δημοσ.

Έχω το παρακάτω προβλημα.

Εχω εναν int pid;

Και θελω να δημιουργησω εναν σημαφορο με την semget();

Και θελω η τιμη που θα επιστρεφει η semget() να ειναι το pid.

κανω το εξεις: semget(pid,1,0666|IPC_CREAT);

αλλα ποτε η επιστρεφομενη τιμη δεν ειναι το pid.

Υπαρχει καποιος τροπος;

* pid=getpid() απο διεργασια παιδι.

επισης εχω δοκιμασει να δηλωσω το pid σαν key_t.

Ευχαριστώ.

Δημοσ.

Δεν είμαι σίγουρος αν έχεις καταλάβει τι κάνει η semget. Αυτό που ζητάς είναι σα να λες ότι θέλεις η malloc να σου επιστρέψει συγκεκριμένη τιμή: δεν πρόκειται γιατί δεν έχει κανένα νόημα να γίνει κάτι τέτοιο.

Δημοσ.

Έχω το παρακάτω προβλημα.

Εχω εναν int pid;

Και θελω να δημιουργησω εναν σημαφορο με την semget();

Και θελω η τιμη που θα επιστρεφει η semget() να ειναι το pid.

κανω το εξεις: semget(pid,1,0666|IPC_CREAT);

αλλα ποτε η επιστρεφομενη τιμη δεν ειναι το pid.

Υπαρχει καποιος τροπος;

* pid=getpid() απο διεργασια παιδι.

επισης εχω δοκιμασει να δηλωσω το pid σαν key_t.

Ευχαριστώ.

 

Ο σημαφόρος χρησιμοποιείται για συγχρονισμό processes, προστασία διαμοιραζόμενης μνήμης (π.χ. για να μην γράφουν παράλληλα διεργασίες που δεν πρέπει, κ.λ.π.)

 

Το pid μιας διεργασίας είναι το αναγνωρηστικό της, ώστε να μπορείς να την διαχειρίζεσαι, είναι δηλαδή το "όνομα" της

 

Δεν βλέπω κάποιον λόγο για τον οποίο να θες ο σημαφόρος να επιστρέφει το pid κάποιας διεργασίας, οπότε υποθέτω θα εννοείς κάτι διαφορετικό..

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...