C இல் உதாரணம் மூலம் முட்கரண்டி மற்றும் செயல்பாட்டால் குறியாக்கம்

Coding With Fork Exec Example C



எங்கள் கட்டுரையின் தலைப்பில் சி கணினியின் இரண்டு வெவ்வேறு செயல்பாடுகள் உள்ளன, அவை எங்கள் கணினியில் எந்த நிரலையும் இயக்கும் போது நிகழ்கின்றன. துரதிருஷ்டவசமாக, ஒரு நேரத்தில் ஒன்றுக்கு மேற்பட்ட திட்டங்கள் நிகழும் சாத்தியம் இல்லை. ஒரு குறிப்பிட்ட நேரத்தில் ஒரே ஒரு பணி மட்டுமே நடக்கும், அதாவது ஒரே நேரத்தில் நிரல்களை இயக்க அனுமதிக்காது. இது ஒரு செயல்முறையின் நிறைவுக்காக மற்றொன்றை செயல்படுத்த காத்திருக்க வைக்கிறது. இந்த சரிசெய்தல் சிக்கலைத் தவிர்க்க, நீங்கள் ஒரு நல்ல டெவலப்பராக இருப்பதால், உங்கள் திட்டத்தை ஒரு நல்ல வழியில் உருவாக்க வேண்டும். லினக்ஸ் ஃபோர்க் () காத்திருப்பை சமாளிக்கவும் உங்கள் கணினியில் ஒற்றுமையை அனுமதிக்கவும் பயன்படுத்தப்படுகிறது. இது ஒரு புதிய செயல்முறையை நகலெடுக்க உதவுகிறது மற்றும் நகல் செயல்முறைக்கு அழைப்பதன் மூலம் புதிய ஒன்றை உருவாக்குகிறது. புதிய செயல்முறை குழந்தை செயல்முறை ஆகும், முந்தையது பெற்றோர் செயல்முறை என்று அழைக்கப்படுகிறது.

அதேசமயம், தற்போதுள்ள நிரலை புதியதாக மாற்றுவதற்கு exec () செயல்பாடு பயன்படுத்தப்படுகிறது. நிரல் அல்லது கோப்பின் உள்ளடக்கத்தில் திருத்தங்களைச் செய்வதன் மூலம் இந்த மாற்றீடு செய்யப்படுகிறது. முட்கரண்டி மற்றும் செயல்பாட்டிற்கு இடையிலான வேறுபாடு என்னவென்றால், முட்கரண்டி ஏற்கனவே உள்ள செயல்முறையிலிருந்து ஒரு புதிய செயல்முறையை உருவாக்குகிறது, மேலும் தற்போதுள்ள நிரலை புதியதாக உருவாக்கி மாற்றுவதற்கு exec பயன்படுத்தப்படுகிறது.







முன்நிபந்தனைகள்

உங்கள் லினக்ஸ் சிஸ்டத்தில் எந்த சி புரோகிராமையும் இயக்க, நாம் அதில் சில முன்நிபந்தனைகளை நிறுவ வேண்டும். குறுக்குவழி முறையைப் பயன்படுத்தி முனையத்திற்குச் செல்லவும் Ctrl+Alt+T. இப்போது மேன் பக்கங்களை நிறுவ பின்வரும் கட்டளைகளை எழுதவும்.



$சூடோபொருத்தமானநிறுவுmanpages-dev



இது தொடர்புடைய அனைத்து பக்கங்களையும் நிறுவும்.





முன்னோக்கி நகர்ந்து, லினக்ஸில் ஒரு நிரலை இயக்க, நீங்கள் ஒரு குறியீடு தொகுப்பாளரை நிறுவ வேண்டும். அது குறியீட்டைத் தொகுத்துச் செயல்படுத்த பயன்படுகிறது. இந்த நோக்கத்திற்காக, நாங்கள் எங்கள் கணினியில் GCC களஞ்சியங்களை நிறுவுவோம்.

$சூடோபொருத்தமானநிறுவுஜி.சி.சி



C இல் exec உடன் குறியாக்கம்

நாம் லினக்ஸில் மேன் பக்கங்களை நிறுவியிருப்பதால், exec தொடர்பான விளக்கத்தைக் காண பின்வரும் கட்டளையைப் பயன்படுத்துவோம். முதன்மை மாதிரி தொடரியல் பின்வருமாறு:

தொடரியல்

நிறைவேற்று(பாதை பெயர்/கோப்பு, argv);

இங்கே unistd.h தலைப்பைப் பயன்படுத்தியுள்ளோம், ஏனெனில் அதில் exec செயல்பாட்டின் குடும்பங்களின் அனைத்து தகவல்களும் உள்ளன.

$ஆண் நிறைவேற்று

இப்போது மேலே குறிப்பிட்டுள்ள படத்தில், நீங்கள் செயல்பாட்டு வகைகளை அவதானிக்கலாம். இவை செயல்பாட்டு செயல்பாடுகளின் குடும்பம். ஒவ்வொன்றும் ஒரே அடிப்படை, செயல்பாட்டைப் பின்பற்றும் வெவ்வேறு செயல்பாடுகளுக்கானது.

உதாரணமாக: இப்போது, ​​மேலும் நகரும் போது, ​​ஒரு உதாரணத்தின் உதவியுடன் exec இன் செயல்பாட்டை விவரிப்போம். அதன் செயல்பாட்டை நிரூபிக்க execv இன் ஒரு செயல்பாட்டை எடுப்போம், இது execv. முதலில், .c இன் நீட்டிப்புடன் இரண்டு கோப்புகளை உருவாக்குவோம். அவை உருவாக்கப்பட்ட பிறகு, அந்தந்த குறியீடுகளை அவற்றில் எழுதி முடிவை பார்க்க அவற்றை செயல்படுத்துவோம்.

மாதிரி 4. சி என்ற கோப்பு பெயரைக் கவனியுங்கள். தயவுசெய்து அதைத் திறந்து பின்வரும் குறியீட்டைப் பயன்படுத்தவும். இந்த குறியீட்டில், கீழே குறிப்பிடப்பட்டுள்ள ஒரு குறிப்பிட்ட முறையில் நாங்கள் execv ஐப் பயன்படுத்தியுள்ளோம்.

Execv(./மாதிரி 4 நகல், வாதங்கள்);

முதல் பகுதி புதிய அடைவு பாதையைக் கொண்டுள்ளது, இரண்டாவது பகுதி வாதங்களின் வரிசையை நாம் கடந்து வந்த அளவுருவாகக் காட்டுகிறது.

மாதிரி 4. சி

முதலில், தற்போதைய செயல்முறையின் ஐடியை நாங்கள் அச்சிட்டோம். இரண்டாவதாக, முடிவடைவதற்கு முடிவில் NULL கொண்ட ஒரு எழுத்து வரிசையை நாங்கள் உருவாக்கியுள்ளோம். மூன்றாவதாக நாங்கள் மாதிரி 4 நகல் செயல்பாட்டை அழைத்தோம்.

மாதிரி 4 நகல். சி

நாங்கள் exec செயல்பாட்டை () அழைக்கும்போது, ​​செயல்முறை படம் மாற்றப்படும். கீழே மேற்கோள் காட்டப்பட்டுள்ள படம் மாதிரி 4copy.c குறியீட்டை காட்டுகிறது.

தற்போதைய செயல்முறையின் ஐடியைப் பெற இங்கே நாங்கள் அச்சு அறிக்கைகளை மட்டுமே பயன்படுத்தினோம்.

பின்வரும் கட்டளைகளைப் பயன்படுத்தி அந்தந்த குறியீடுகளின் வெளியீட்டைப் பெறலாம்.

$ GCC – o மாதிரி 4 மாதிரி 4. c
$ GCC –o மாதிரி 4 நகல் மாதிரி 4copy.c
$./மாதிரி 4

நாம் முன்பு விவரித்தபடி, GCC வார்த்தை குறியீட்டைத் தொகுக்கப் பயன்படுகிறது, மேலும் தொகுத்த பிறகு, குறியீடு வெற்றிகரமாக செயல்படுத்தப்படுகிறது.

படத்தின் படி, மாதிரி 4. சி கோப்பின் PID முதலில் exec அழைப்புக்கு முன் அறிவிக்கப்பட்டது. Exec () செயல்பாடு அழைக்கப்பட்ட பிறகு, கோப்பு மாதிரி 4copy.c இன் இரண்டு பிரிண்ட் ஸ்டேட்மெண்ட்களும் செயல்படுத்தப்படுகின்றன, அங்கு செயல்முறை ஐடி பெற getpid () பயன்படுத்தப்படுகிறது.

C இல் ஒரு முட்கரண்டி கொண்டு குறியாக்கம்

ஃபோர்க் () செயல்பாடு குழந்தை செயல்முறையை பெற்றோர் செயல்முறையிலிருந்து உருவாக்குகிறது. இது முள் தகவல் உட்பட இரண்டு தலைப்புகளையும் கொண்டுள்ளது.

தொடரியல்:

பிட்_டி ஃபோர்க்(வெற்றிடம்);

பயன்பாட்டில் உதவிக்காக நாம் மேன் பக்கத்தைப் பயன்படுத்தலாம்

$ஆண்முள் கரண்டி

உதாரணமாக: மாதிரி 3. சி கோப்பை உருவாக்குவதன் மூலம் ஒரு உதாரணத்தைக் கவனியுங்கள். கோப்பின் உள்ளே குறியீட்டை உள்ளிடுவோம். குறியீட்டின் படி, நாங்கள் முட்கரண்டி நிலையை forkrank என அமைத்துள்ளோம்.

மாதிரி 3. சி

நிபந்தனையைப் பயன்படுத்த if-else அறிக்கையைப் பயன்படுத்தினோம். ஃபோர்க் () கருத்தைப் புரிந்துகொள்ள உதவும் எளிய அச்சு கட்டளைகள் இங்கே அறிவிக்கப்பட்டுள்ளன. ஃபோர்க்ராங்க் முதலில் 0 மற்றும் பின்னர் -1 என அறிவிக்கப்பட்டது. ஒரு முட்கரண்டி () உடன், இப்போது இரண்டு செயல்முறைகள் ஒரே நேரத்தில் வேலை செய்கின்றன. Exec எடுத்துக்காட்டில் மேலே பயன்படுத்திய அதே குறியீட்டைப் பயன்படுத்தி வெளியீட்டைப் பெறலாம்.

$ GCC –o மாதிரி 3. சி
$./மாதிரி 3

பெற்றோர் செயல்முறை காத்திருக்கும்போது குழந்தையின் செயல்முறையானது பெற்றோரை விட முன்னதாகவே செயல்படுத்தப்படுகிறது என்பதை வெளியீடு காட்டுகிறது. அனைத்து குழந்தை செயல்முறைகளிலும் ஒன்று நிறுத்தப்படாவிட்டால், அது பெற்றோர் செயல்பாட்டை காத்திருக்க வைக்கும் என்று காத்திருப்பு செயல்பாடு குறிக்கிறது.

ஃபோர்க் மற்றும் எக்ஸெக் சிஸ்டம் கூட்டாக அழைக்கிறது

இங்கே மாதிரி 1. சி மற்றும் மாதிரி 2. சி என்ற இரண்டு கோப்புகளை எடுத்துக்கொள்வோம். முதலில், sampl1.c கோப்பைத் திறந்து படத்தில் கீழே சேர்க்கப்பட்டுள்ள குறியீட்டை எழுதவும். நாங்கள் இங்கே ஃபோர்க் () சிஸ்டம்-கால் பயன்படுத்தினோம்; குழந்தை செயல்முறை உருவாக்கப்படும் போது, ​​p க்கு 0. ஒதுக்கப்படும்

மாதிரி 1. சி

மாதிரி 2. சி

மேலே விவாதிக்கப்பட்ட உதாரணங்களைப் போலவே, மாதிரி 2 கோப்பில் அதில் printf அறிக்கைகள் இருக்கும். மாதிரி 1. சி யில், முதல் அச்சு கட்டளை முதலில் செயல்படுத்தப்படுகிறது, பின்னர் முள் செயல்பாடு அழைக்கப்படுகிறது, போது p == 0, பின்னர் குழந்தை பகுதி செயல்படுத்தப்படும் மற்றும் மாதிரி 2. சி கோப்பு இயக்கப்படும். வெளியீட்டில் இரண்டு கோப்புகளையும் தொகுக்க GCC இருக்கும். இங்கே பெற்றோர் மாதிரி 1. சி ஐடி மற்றும் மாதிரி 2. சி ஐடி வேறுபடுகின்றன, ஏனெனில் அவர்கள் பெற்றோர் மற்றும் குழந்தை.

முடிவுரை

இந்த கட்டுரையில், பயன்பாடு மற்றும் கருத்தை எளிதில் புரிந்துகொள்ள நாங்கள் முட்கரண்டி மற்றும் செயல் இரண்டையும் தனித்தனியாகவும் கூட்டாகவும் பயன்படுத்தினோம். இந்த டுடோரியலில் போதுமான அளவு உள்ளடக்கம் உள்ளது என்று நம்புகிறேன், அது உங்கள் அறிவை அதிகரிக்க உதவுகிறது.