24-11-2007, 13:41
|
|
|
חבר מתאריך: 15.08.06
הודעות: 1,561
|
|
בעיה עם הקצאת זכרון משותף על UNIX
קורס מערכות הפעלה, קיבלנו תרגיל של תוכנית שמחשבת סדרה ע"י 3 תהליכים כאשר התהליך הראשון מקצה זכרון משותף עם התהליך השני, השני מקצה זכרון משותף עם השלישי ורק השלישי מחשב כל פעם את האיבר הבא, ומחזיר את הבקרה לשני.
הפרטים לא מעניינים כלכך. הקטע הוא שצריך לעשות את זה גם לסביבת חלונות וגם ליוניקס.
בקיצור, החלק הבא בקוד לא עובד לי:
קוד:
#include <iostream>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main()
{
key_t key = ftok(".", 'g');
if (key == (key_t)-1) {
perror("ftok");
exit(1);
}
int shmid = shmget(key, 24, 0644 | IPC_CREAT);
if (shmid == -1) {
perror("shmget");
exit(1);
}
return 0;
}
הוא נותן את השגיאה - shmget: No space left on device
(הקוד שהדבקתי זה בערך העתק של החלק שאני משתמש בו בתרגיל עצמו, פשוט ניסיתי לראות אם זה בעיה בקוד הספציפי הזה או בכל התוכנית, והבעיה היא פה)
השרת שאני עובד עליו הוא של המכללה אבל אני בטוח שיש לי שם מקום, אז זה פשוט לא מסתדר לי..
|