اكثر المحتويات زيارة
الدوال في الاكسل (4,649 مشاهده)
ربط قاعدة بيانات أكسس (MS Access) مع برنامج الفيجوال بيسك بطريقة(ODBC) (3,223 مشاهده)
الدرس الثالث : بعض تطبيقات الدوال في اكسل (2,413 مشاهده)
تعريف الاستعلام وطريقة عرضه في آكسس، أنواع الاستعلامات، نافذة تحديد الاستعلام! (1,853 مشاهده)
الدرس الثاني: بعض الحيل لتسهيل برنامج اكسل (1,698 مشاهده)
شرح طريقة استعمال الأوتلوك مع بريد الهوتميل (1,660 مشاهده)
تغيير لغة واجهة التطبيق من عربي الى انجليزي وبالعكس لـ Windows-based applications (1,659 مشاهده)
أنواع العلاقات وطريقة الربط بين الجداول. (1,568 مشاهده)
مقدمة عامة حول الاكسل وحيل خاصة بالاكسل (1,372 مشاهده)
الدرس الأول : عمل شريحة في البوربوينت (1,317 مشاهده)
أنشئ قاعدة بياناتك التي ستستند إليها في تعلم طريقة ربط الجداول والاستعلامات. (1,315 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس . (1,151 مشاهده)
كيفية حل مشاكل الانترنت اكسبلور Internet Explorer (1,135 مشاهده)
اضافه صوت ونص لخلفيه في باور بوينت (1,096 مشاهده)
درس تعريب المجلة (1,080 مشاهده)
برنامج Windows Movie Maker لتكوين أفلام (1,067 مشاهده)
شرح طريقة التجميع Grouping في برنامج الاكسل (1,060 مشاهده)
التعرف على مكونات الكمبيوتر (1,029 مشاهده)
مقدمة في ربط قواعد البيانات داخل بيئة الـ .NET باستخدام الـ VB.NET (981 مشاهده)
كيف تجعل برنامجك أكثر تألقا وجمالا باستخدام أداة Active Skin (909 مشاهده)
مقدمة عن لغة البيسك (898 مشاهده)
ما هو المات لاب MATLAB؟ (890 مشاهده)
الفيجوال بيسك - مقدمة (865 مشاهده)
دروس في الأوفيس الأكسس - Access0- (831 مشاهده)
نبذه عن الفيجوال بيسك (795 مشاهده)
الجديد
التحويل التلقائي للحروف ل- ل- ه إلى اسم الجلالة0---- (490 مشاهده)
النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0---النسبة المئوية لا تظهر بالخط العربي & الشدة وألف المد في لفظ الجلالة0--- (284 مشاهده)
ضبط خيارات اللغة فى الـ Microsoft Word0--- (303 مشاهده)
استخدام لوحة المفاتيح في الـ Word0---- (431 مشاهده)
إضافة كلمة سر إلي ملفات الورد دون استخدام برامج0--- (384 مشاهده)
دمج المراسلات0-- (198 مشاهده)
وضع صورة كخلفية للنص0-- (287 مشاهده)
السماح للمستخدمين بتعديل أجزاء من ملف وورد محمي (Word2003)0--- (223 مشاهده)
كتابة الأرقام الكسرية ورموز المعادلات0-- (342 مشاهده)
درس كامل عن الدمج السهل من لوحة المفاتيح ف0-ي برنامج الـ Word (260 مشاهده)
دورة الأكسس: الدرس السادس : منوعات في أكسيس .0--- (736 مشاهده)
دورة الأكسيس : الدرس الرابع : العلاقات0---- (439 مشاهده)
أساسيات في Access0--0 (283 مشاهده)
تصميم تقرير لطباعة البيانات0---- (343 مشاهده)
تصميم نموذج استعراض البيانات‏0--تصميم نموذج استعراض البيانات‏0-- (319 مشاهده)
تصميم نموذج إدخال‎ ‎البيانات0--- (340 مشاهده)
إنشاء قوائم خاصة باستخدام الماكرو(1)0-- (289 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (2)0-- (234 مشاهده)
خطوات إنشاء الماكرو في تذييل النموذج (1)0- (240 مشاهده)
استعلامات SQL في Access - تعديل الجداول وإضافة الحقول0- (281 مشاهده)
استعلامات SQL في Access - تحديث البيانات الجدولية0-- (249 مشاهده)
الاستعلامات الإجرائية -4 (استعلام الحذف)0--- (144 مشاهده)
الاستعلامات الإجرائية -2 (استعلام الإلحاق)0--- (174 مشاهده)
تصميم تقرير لطباعة الإجمالي0--- (206 مشاهده)
استعلامات التحديد Select Query مع أمثله (1)0--- (258 مشاهده)
البحث

من هنا وهناك
قريبا باذن الله
قريبا باذن الله
قريبا باذن الله
قريبا باذن الله
قريبا باذن الله
تخاطب البرامج بإستخدام الـ pipe

بسم الله الرحمن الرحيم



 



 



تطرقنا في درسنا السابق إلى الدالة fork و إستخداماتها و تعلمنا كيف من الممكن أن ننشئ من برنامجنا الأصلي



برنامج إبن له Child, في درسنا اليوم سوف نتطرق إلى الدالة Pipe التي من خلالها سوف نجعل البرنامج و إبنه يتبادلون



الرسائل بينهم بواسطة ما يسمى بالـ pipe .



 



أولاً: ما هو الـ pipe ?



الـ pipe هو دالة - system call - في نظام التشغيل Linux/Unix و التي من شأنها تبادل المعلومات بين البرامج أو



 الـ Processes, سواء كان بين الأب و إبنه أو برنامج و برنامج آخر ...



و الـ pipe هو نظام نقل بيانات أحادي الإتجاه one-way, و يمكن القول أنها عبارة عن ملف مؤقت Temporary File



و التي من شأنها أن يكتب البرنامج الأول معلومات إلى البرنامج الثاني لكي يقرأها ... كما هو موضح في الرسم 1.1



 





 



 



و من الممكن إنشاء الـ pipe بإستخدام الدالة pipe  و التي تأخذ الشكل التالي:



int pipe(int fd[2]);



و نلاحظ أن الدالة تستقبل مصفوفة من عنصرين و اللذين يكونان بالشكل التالي:



fd[0] is for reading.



fd[1] id for writing.



و عند نجاح إستدعاء الدالة فإنها ترجع القيمة صفر و عند الخطأ -1 .



 



و لاكن عند المثال يتضح المقال, وقبل أن نأخذ هذا المثال سنتعرف على دالتين هما:



int read(int fd, void *buf, size_t count);



int write(int fd, const void *buf, size_t count);



و اللتان تقرآن و تكتبان في الـ pipe, المتغير الأول نعطيه في الـ read المتغير [fd[0 و في الـ write نعطيه المتغير [fd[1.



أما المتغير الثاني فنعطيه أي شيئ سواء كان record أو متغير عادي و لكن لابد أن يكون مؤشر كما هو واضح



أو يكون مصفوفة ( طبعاً المصفوفة و المؤشر شيئ واحد كما نعرف ).



و جميع الثلاثة دوال pipe, read and write توجد في المكتبة:



unistd.h



 



و الآن لنأحذ المثال التالي:



 



#include <unistd.h>



#include <stdio.h>



int main( )



{



int fd[2];                                   /* descriptors for the pipes  */



char buf[1];                                /* buffer to be used for read and write */



if (pipe(fd) == -1)



   perror("error creating a pipe");



else



{



switch(fork())



{



case –1:



              perror("error creating a child");



break;



case 0:                                   /* child process is a pipe reader */



              close(fd[1]);            /*Close pipe write end */



              read(fd[0], (char)buf, 1);    /* read pipe into buf */



              printf("%c \n", buf[0]);  /* print contents of buf */



break;



default:                                 /*parent process is pipe writer */



              close(fd[0]);           /*Close read end */



              write(fd[1], 'a', 1);     /* write pipe into buf */



break;



} /* end of switch */



} /* end of else */



}



 



لشرح هذا المثال:



في الأول هذا برنامج بسيط يرسل الأب إلى الإبن الحرف a و يطبعة الإبن.



عرفنا المتغير fd من نوع int كمصفوفة من متغيرين للـ pipe ثم عرفنا المتغير buf من نوع char و مصفوفة من عنصر



واحد ( تذكر المصفوفة هي مجرد تمثيل بإستخدام المؤشرات ).



ثم أنشأنا الـ pipe  و تأكدنا أنه لم يرجع سالب واحد ( أي لايوجد فيه أخطاء ).



الآن عملنا fork طبيعية كما درسنا في الدرس السابق.



 



في جزء الإبن: case 0 ...



سوف نغلق طرف الكتابة في الإبن لأننا سوف نقرأ ثم نصل إلى الجملة:



read(fd[0], buf, 1); 



 



عندها يقف الإبن في إنتظار أن يكتب له ...



الآن في الجزء الخاص بالأب سنغلق طرف القراءة لأننا سوف نكتب في الـ pipe و سوف نكتب للأبن الحرف a في



طرف الكتابة [fd[1 الآن الإبن سوف تصله هذه الرسالة و سوف يقرأها من طرف القراءة [fd[0 و يخزنه في المتغير



buf ثم سنطبع المتغير buf و ستجد أنه الحرف a .



 



طبعاً من الممكن أن نغير قليلاً في البرنامج لنجعله يقرأ سلاسل حرفية أو حتى سجلات Structures .



 



في درسنا هذا درسنا فقط الـ Low level Piping أما الـ High level Piping فهو شبيه جداً بالملفات ربما نتطرق



إليه في درس آخر.



 



الآن يمكنك التعديل على البرنامج السابق لعمل أشياء كثيره جداً لتقسيم المهام بين الاب و الابن ثم التراسل



فيما بينهم.



 



و إن شاء الله سوف نتطرق في درسنا القادم إلى دوال الـ exec family .



 



هذا و الله أعلم ...



 



تحياتي طلال السبيعي.



 

تخاطب البرامج بإستخدام الـ pipe

أضف هذه المادة في موقعك:
مواد مشابهة:
الدرس السابع: كتابة الدوال والبرامج الدرس السابع: كتابة الدوال والبرامج
الدرس السابع: كتابة الدوال والبرامج
(مرات المشاهدة: 256 مرات)
مقدمة في البرمجة تحت لنكس بلغة سي و طريقة إستعمال المترجم gcc مقدمة في البرمجة تحت لنكس بلغة سي و طريقة إستعمال المترجم gcc
مقدمة في البرمجة تحت لنكس بلغة سي و طريقة إستعمال المترجم gcc
(مرات المشاهدة: 347 مرات)
تعارف اهداءات ترحيب تبريك الحوار العام الفسحة العامة الطلاب و الاختبارات و الاسئله الجريمه حوادث كوارث جرائم معجم لهجات الفاظ مصطلحات عبارات حكم المنتدى الاسلامى تفسير الاحلام dreams صوتيات اسلاميه اناشيد محاضرات خطب وعظ الخينة الرمضانية اللغة الانجليزيه English الطرائف والمرح والفكاهه والتسليه العاب اكس بوكس بلاستيشن XBOX360 & PS3 playstation بلاي استيشن دريم كاست نتندو Anime انمي افلام كرتون السياحة و السفر والرحلات الافلام المنوعه افلام عربيه افلام اجنبيه الصور المضحكه والتعليق مسابقات الغاز حكاوي تطوير المواقع و السكربتات Ajax XML CSS JavaScript PHP Perl CGI seo Search Engine web2 تطوير و صيانة المنتديات vBulletin مشاكل و حلول للمنتديات و المواقع المشكله و الحل و الصيانة الهاكات برودكت بلقن Product - Plugins استايلات قوالب واجهاتstyle - template حراج انترنت مستعمل + جديد اشهار مواقع تبادل اعلانات بيع و شراء منتديات ستلايت فضائيات قنوات ترددات كامات شفرات مفاتيح شيرنج Sharing كروت ساتلايت و الرسيفرات الشعر العام البوح بالخافي فصحى نبطي الخاطرة الأدبية خواطر منوعه قصص روايات الكمبيوتر الحاسب والاجهزة العام البرامج الكاملة وشروحها وتعريب البرامج البرامج العربية والمعربة البرامج المشروحة و شروحات البرامج فوتوشوب photoshop رسم تصميم فلاتر فرش تدرجات خطوط باترن اشكال جوال بلوتوث جميع اجهزة الجوال mobile bluetooth بوكيت بي سي Pocket PC اجهزة كفية بلوتوث bluetooth فلاش سويتش سويش ماكس FLASH _ SWiSH الهكرز و الاختراق حماية فيروسات اختراق كراك hacker crack virus حواء للبنات نسائي للحريم فقط والبنوتات المطبخ للطبخ والاكل وكل امور المطابخ تطوير الذات و البرمجة اللغوية العصبية عيادة طبية للفلوق وغيرها صحه وعلاج health طقها والحقها الرياضي رياضه عربيه منوعه رياضه اجنبيه دوري اسباني وايطالي وغيره قنص صيد رحلات برية بحرية سيارات دراجات نارية تفحيط ترهيم
جميع الحقوق محفوظة مدرسة المشاغبين منتديات مدرسة المشاغبين  Copyright © All rights reserved sitemap