السلام عليكم ورحمة الله وبركاته
ممكن أعرف وش هو "child process" أو "حشقثىف parent"
?
وكيف تتم الإستفادة منهم في السي ?? :)
ومشكورين
السلام عليكم ورحمة الله وبركاته
ممكن أعرف وش هو "child process" أو "حشقثىف parent"
?
وكيف تتم الإستفادة منهم في السي ?? :)
ومشكورين
السلام عليكم...
الموضوع ببساطة... هو أن الـ Process هي العملية التي يقوم بها الـ Processer
وإذا شغلت كود معين يكون هو الـ Parent Process ومن خلاله "Parent Process" من الممكن إستخراج الـ Child Process
فالـ Child Process هو نفس الـ Parent Process ولكنه منفصل عنه بحيث يمكنك تغيير بعض القيم في الـ Child Process دون التأثير بالـ Parent Process.
وطرق الإستفادة في هذا الموضوع يعتمد على العمليات التي تريدها من البرنامج، مثلا: كما ذكرت سابقا إذا كنت تريد الأحتفاظ بالـ Process الأساسي بقيمه تقوم بإنشاء Process
آخر يكون طبق الأصل من الـ Process الأساسي فتغير بقيم الـ Process الجديد دون التأثير بالـ Process الأساسي، فيكون الـ Process الأساسي هو Parent Process
والجديد هو Child Process.
وللأسف لم نتعلم إلا أمر واحد بالـ C يعمل الـ Parent Process و Child Process ، ألا وهو الأمر fork وهو على حد علمي يعمل بالـ lnix و Unix فقط.
وأتمنى أن تستفيد من هذا الشرح البسيط وأتنمى أن لا تكون فيه أي أخطاء علمية ولا لغوية... وشكراً
وفي هذا الرابط مثال جميل يوضح ما أخبرتك عنه :
http://en.wikipedia.org/wiki/Fork_%28operating_system%29
وبتوفيق... ... ...
YOU ARE THE BEST
:)YOU ARE THE BEST
السلام عليكم
مشكور أخي SniperProf على هذا الشرح
وأضيف عليه هذا الكود الذي يظهر جميع البرسيسوس في الحاسوب إضافة إلى معرفها ومعرف الأب آمل أن يكون مفيدا.
والله أعلم
// Arabteam_ProcessLister.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <windows.h>
#include <commctrl.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{ // first check the OS we are running on...
OSVERSIONINFO osinfo;
// this structure size must be set prior to calling GetVersionEx
osinfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
if (!GetVersionEx(&osinfo))
{ printf("Unable to get OS version!\n");
return 0;
}
// Enumerate the proces list of the system
// "0" means to createsnapshot in context of our process
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (!hSnapshot)
{ printf("Unable to create snapshot!");
return 0;
}
// prepare to enumerate the processes.
PROCESSENTRY32 pe;
// remember to init the structure...
pe.dwSize=sizeof(PROCESSENTRY32);
BOOL retval=Process32First(hSnapshot,&pe);
while(retval)
{ // Get process info
// Get Process parent Identifier : pe.th32ParentProcessID.
// Get process identifier : pe.th32ProcessID.
printf("Process: %S, ProcessID: %08X, ParentProcessID: %08X \n ", pe.szExeFile,
pe.th32ProcessID,
pe.th32ParentProcessID);
// move to next process
retval=Process32Next(hSnapshot,&pe);
}
//close the snapshot handle
CloseHandle(hSnapshot);
getch();
return 0;
}لا تنسى مواضيع السينكرونايزيشن :D
ال شيلدبروسيس هى برنامج تم تشغيله من داخل برنامج ناتى
وال بيرنت دا بقى البرنامج التانى الى شغل البرنامج الاول
وممكن يكون البرنامج شيلد وبيرنت فى نفس الوقت
يعنى ممكن تعمل برنامج يشغل الاله الحاسبه
كدا بنامجك انت بيرنت والاله الحاسبه شيلد
وفى نفس الوقت برنامجك شيلد بالنسبه للبرنامج الشغله ذى الاكسبلورر
Ben_Laiid
مواضيع السينكرونايزيشن Synchronization
افرض عندك 2 processes وانت فتحت ملف وكل الاثنين فاتحينه as write mode يعني كلهم يكتبون
انت ما راح تعرف من الي راح يكتب (اعتمادا على الـ quantum time والalgorithm المستعملة في الCPU) فتضطر تزامن في ما بينهم :)
طبعا هذا المختصر وانا طرحت المشكلة والحلول كثيرة والخوارزميات لحل هالمشكلة كثيرة وراح تدخل في قسم اخر هو الـ signals ...
هذا الموضوع مغلق.