-
همين
سلام
1-اگر من يك struc بخام به صورت سراسري تعريف كنم كه براي تمام توابع قابل دسترسي باشه با يد اين طوري تعريف كنم
[HTML]
# define struct sem_buf
{
semnum;
semop;
semflag
};
[/HTML]
يعني بايد با #define بنويسم
2-چون برنامه من مقدار خروجي نداره بايد main را اين طوري بنويسم؟
[HTML]
void main ()
[/HTML]
3- 0066 در semget چيه؟
گزينه هاي داخل struct براي چيه/
-
دوباره سلام.
همون struct کافیه و نباید از defile# استفاده کنین.
کد:
struct sem_buf
{
semnum;
semop;
semflag
};
ضمنا باید نوع ها رو هم مشخص کنین. مثلا semnum از نوع int هست و باید کامل تعریف بشه.مثلا
کد:
struct sem_buf
{
int semnum;
.
.
};
فقط structure رو قبل از تابع main تعریف کنین. که شکل کامل تعریفش به این صورت میشه :
کد:
struct sembuf
{
short sem_num;
short sem_op;
short sem_flg;
};
در مورد سوال دوم :کاملا درسته از نوع void باید باشه.
در مورد سوال سوم : آرگومان سوم یک flag (پرچم) هست برای اینکه semaphore مورد نظر به چه شکل ایجاد
بشه. بهتره از این ترکیب استفاده کنید.
کد:
semget(i, n, 0666 | IPC_CREAT);
----------------------------------------------------------------------------------------------------------
در مورد این سه کد قبلا صحبت کردیم :
برای ایجاد یک semaphore با ID برابر 100 استفاده میشه.
semaphore ی که ایجاد شده رو با عدد 1 مقدار دهی میکنه. (SETVAL باید uppercase باشه)
کد:
semctl (100,0,SETVAL,1);
برای استفاده از semaphore ایجاد شده و تغییر مقدار اون (زیاد کردن ویا کم کردن مقدار برای lock و یا unlock)
استفاده میشه. که در اینجا sem_set_id برابر 100 هست.
کد:
semop(sem_set_id, &sem_op, 1);
-
تشكر
سلام
از لطف شما و صبر وتحمل شما و جوابهاي شما متشكرم و خوشحالم كه در اين سايت عضوم و باز هم خوشحالم كه افرادي مثل شما بدون چشم داشت و با صبر كمك مي كنند
سال خوبي رو براي شما و خانواده شما آرزومندم;) :38:
-
دوباره سلام.
خواهش میکنم . من کاری نکردم.
امیدوارم شما هم در درس و زندگیتون موفق باشین.
اگه مشکلی پیش اومد خوشحال میشم بتونم کمکی کنم.