تقوم Fork بإنشاء عملية جديدة، والعملية التي تم إنشاؤها حديثًا هي عملية فرعية، وهي نسخة من التعليمات البرمجية اللاحقة للعملية الأصلية.
استخدم getpid لتحديد ما إذا كانت العملية الحالية هي عملية فرعية أم عملية أصل.
خذ بعين الاعتبار المثال التالي:
وفيما يلي المحتوى المقتبس:
#تتضمن <sys/types.h> #تشمل <unistd.h> #تشمل <stdio.h> إنت الرئيسي () { معرف المنتج_t؛ ثابت كثافة العمليات ن = 0؛ printf("شوكة!n"); التبديل (معرف المنتج = شوكة ()) { الحالة-1: { /* ..pid.-1.fork.... */ /* ....... */ /*..........*/ perror("فشلت الشوكة!"); استراحة؛ } الحالة 0: { /* معرف المنتج..... */ printf("[طفل] أنا طفل!n"); printf("[child]getpid=[%d]n", getpid() ); printf("[child]pid=[%d]n", pid ); استراحة؛ } تقصير: { /* معرف المنتج..0.... */ printf("[parent]أنا أحد الوالدين!n"); printf("[parent]getpid=[%d]n",getpid() ); printf("[parent]pid=[%d]n",pid ); استراحة؛ } } printf("n=[%d]n", n++); العودة 0؛ } |
تم تجميع هذا المثال مع gcc ضمن Linux، وكانت نتائج التشغيل كما يلي:
وفيما يلي المحتوى المقتبس:
شوكة! [الطفل] أنا طفل! [الطفل]getpid=[7422] [الطفل]معرف الهوية=[0] ن=[0] [الوالد] أنا أحد الوالدين! [الأصل]getpid=[7421] [الأصل]رقم التعريف الشخصي=[7422] ن=[0] |