linux-kernel
फोर्क सिस्टम कॉल
खोज…
कांटा () सिस्टम कॉल
fork()
एक सिस्टम कॉल है। कांटा का उपयोग चल रही प्रक्रिया से एक बच्चे की प्रक्रिया बनाने के लिए किया जाता है, जो कि मूल प्रक्रिया की प्रतिकृति है (प्रक्रिया जिसे fork()
निष्पादित किया गया है)। बाल प्रक्रिया मूल प्रक्रिया से ली गई है। माता-पिता और बच्चे दोनों के पास अलग-अलग पते की जगह है, प्रत्येक चर से किए गए परिवर्तनों से स्वतंत्र है।
बच्चे की प्रक्रिया का अपना पीआईडी (प्रक्रिया पहचान) है। चाइल्ड प्रोसेस का PPID (पेरेंट प्रोसेस आईडी) पेरेंट प्रोसेस की PID के समान है।
प्रारूप:
हैडर फ़ाइल:
#include <unistd.h>
घोषणा:pid_t fork(void);
कांटा () को किसी इनपुट तर्क की आवश्यकता नहीं है।
बच्चे की प्रक्रिया के सफल निर्माण पर बच्चे की प्रक्रिया की पिड को माता-पिता की प्रक्रिया में और 0 को बच्चे की प्रक्रिया में वापस कर दिया जाता है। फेल्योर रिटर्न -1
पर कोई प्रक्रिया नहीं बनाई गई है।
उपयोग उदाहरण:
#include <stdio.h>
#include <unistd.h>
void child_process();
void parent_process();
int main()
{
pid_t pid;
pid=fork();
if(pid==0)
child_process();
else
parent_process();
return 0;
}
/*getpid() will return the Pid of the
current process executing the function */
void child_process()
{
printf("Child process with PID : %d and PPID : %d ", getpid(),getppid());
}
void parent_process()
{
printf("Parent process with PID : %d", getpid());
}
बच्चे और माता-पिता से printf
स्टेटमेंट का क्रम शेड्यूलिंग तंत्र पर निर्भर करता है जो विशुद्ध रूप से सिस्टम पर निर्भर करता है।