சியில் லினக்ஸ் போபன் சிஸ்டம் கால்

Ciyil Linaks Popan Cistam Kal



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

எடுத்துக்காட்டு 1

பின்வரும் எடுத்துக்காட்டு நிரல் மூலம், தற்போதைய கோப்பகம் அல்லது கோப்புறையில் இருக்கும் கோப்புகளை popen கணினி அழைப்பைப் பயன்படுத்தி வாசிப்போம். முதலில், சி நிலையான நூலகத்தின் stdio.h தலைப்பு கோப்பை உள்ளீடு செய்துள்ளோம். பின்னர், எங்களிடம் ஒரு நிரல் int main()function உள்ளது, அங்கு நாம் popen செயல்பாட்டைப் பயன்படுத்தியுள்ளோம். இதற்கு முன், 'FILE' வகுப்பில் இருந்து 'FileOpen' என்ற சுட்டி மாறியை நிறுவினோம். கோப்பின் சுட்டிக்காட்டி மாறி, படிக்க அல்லது எழுதுவதற்கு அடுத்த பைட்டைக் குறிக்கிறது.







அதன் பிறகு, படிக்க வேண்டிய எழுத்து வரம்பு மதிப்பை நாங்கள் ஒதுக்கினோம். 'FileOpen' மாறி பின்னர் 'popen' செயல்பாட்டை செயல்படுத்தியது. 'popen' செயல்பாடு லினக்ஸின் 'ls -l' கட்டளையை எடுக்கும், இது தற்போதைய கோப்பகத்தின் அனைத்து கோப்புகளையும் பட்டியலிடும். மேலும், பாப்பன் செயல்பாட்டில் “r” அளவுருவை உள்ளீடு செய்துள்ளோம், இது வாசிப்பு பயன்முறையைக் குறிக்கிறது.



இங்கே, பாப்பன் செயல்பாட்டைப் பயன்படுத்தி கோப்புகளைப் படிக்கும் செயல்முறையை பைப் செய்துள்ளோம். அடுத்து, உருவாக்கப்பட்ட குழாயை while loop மூலம் செயலாக்கினோம். லூப் fgets முறைகளைப் பயன்படுத்துகிறது, இது 'வரி', 'வரியின் அளவு' மற்றும் 'FileOpen' ஆகிய வாதங்களை எடுக்கும். fgets பைப் செய்யப்பட்ட செயல்முறையைப் படித்து அதை சரத்தின் '%s' சின்னத்தில் சேமித்து வைத்தது. இந்த குறிப்பிட்ட குறியீடு 'வரி' வாதத்துடன் சேர்ந்து printf முறையின் உள்ளே அழைக்கப்படுகிறது. குழாயை நாங்கள் உருவாக்கியவுடன், pclosed செயல்பாடு மூலம், கீழே உள்ள நிரலின் முடிவில் பயன்படுத்தப்பட்டுள்ளபடி குழாய் செயல்முறையை மூடலாம்.



# அடங்கும்


முழு எண்ணாக ( )

{

கோப்பு * கோப்பு திற;

கரி வரி [ 130 ] ;


FileOpen = popen ( 'ls -l' , 'r' ) ;

போது ( fgets ( கோடு, கோட்டின் அளவு, ஃபைல் ஓபன் ) )

{

printf ( '%s' , வரி ) ;

}

மூடவும் ( கோப்பு திற ) ;

}





C நிரலின் போபன் செயல்பாடு மேலே உள்ள செயல்முறையை பிரித்து பின்னர் பைப்பை உருவாக்கியது. இப்போது, ​​சி தொகுத்தல் கட்டளையுடன் ஷெல்லில் உள்ள ஸ்ட்ரீமின் செயலாக்கப்பட்ட குழாயை இயக்கியுள்ளோம். அந்த கோப்பகத்தில் நிரலை செயல்படுத்தியதால், வெளியீடு 'முகப்பு' கோப்பகத்தில் உள்ள அனைத்து கோப்புகளையும் பட்டியலிட்டுள்ளது.



உதாரணம் 2

முந்தைய போபன் நிரலில், கோப்புகளைப் படிக்கும் ஸ்ட்ரீமிங் செயல்முறையை பைப்பிங் செய்வதற்குப் பயன்படுத்தப்படும் போபன் நிரலின் செயல்பாட்டின் எளிய செயல்விளக்கத்தை எங்களிடம் உள்ளது. இப்போது, ​​பாப்பன் செயல்பாட்டின் மற்றொரு உதாரணத்தை எடுத்துள்ளோம், அங்கு நாம் எழுதும் பயன்முறையில் செயல்முறையை பைப் செய்துள்ளோம். முக்கிய செயல்பாட்டுடன் நிரலைக் கருத்தில் கொள்வோம். முக்கிய செயல்பாட்டிற்குள் கோப்பு சுட்டிக்காட்டி மாறியை “கோப்பு” என உருவாக்கியுள்ளோம். கோப்பு சுட்டிக்காட்டி பாப்பன் செயல்பாட்டுடன் பயன்படுத்தப்படுகிறது.

popen செயல்பாடு 'cat' கட்டளை மற்றும் 'w' எழுதும் பயன்முறையை எடுக்கும். இங்கே, ஒவ்வொரு கோப்பு வாதமும் வரிசையாக படிக்கப்பட்டு, cat கட்டளை மூலம் நிலையான வெளியீட்டிற்கு அனுப்பப்படுகிறது. ஃபார் லூப் பாடியில், '%d' குறியீட்டைக் குறிப்பிட்டுள்ளதால், எண்களின் எண்ணிக்கையை அச்சிட fprintf செயல்பாட்டைப் பயன்படுத்தினோம். பின்னர் மூடப்பட்டது, pclose அமைப்பு அழைப்புடன் popen குழாய் செயல்முறை.

# அடங்கும்


முழு எண்ணாக ( int argc, சார் ** argv ) {

கோப்பு * கோப்பு = போபன் ( 'பூனை' , 'உள்' ) ;

int x = 0 ;


க்கான ( எக்ஸ் = 0 ;எக்ஸ் < 5 ;x++ ) {


fprintf ( கோப்பு , 'எனது எண்ணிக்கை = %d \n ' , எக்ஸ் ) ;
}

மூடவும் ( கோப்பு ) ;

திரும்ப 0 ;

}

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

எடுத்துக்காட்டு 3

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

அதன் பிறகு, 'வாசிப்பு' மாறியின் உள்ளே உள்ள popen செயல்பாட்டை நாங்கள் அழைத்தோம். அங்கு, போபன் செயல்பாட்டிற்குள் இரண்டு செயல்முறைகள் உள்ளன. 'wc -c' என்பது வழங்கப்பட்ட எழுத்துக்களைக் கணக்கிடப் பயன்படுத்தப்படும் முதல் செயல்முறையாகும், மேலும் இரண்டாவது செயல்முறை 'w' ஆகும், இது குழாய் எழுத்து முறையில் திறந்திருப்பதைக் குறிக்கிறது. அதன் பிறகு, தரவை எழுத குழாயைப் பயன்படுத்தும் 'fwrite' செயல்பாடு எங்களிடம் உள்ளது. தரவு 'wc' ஆல் பெறப்படும், பின்னர் எழுத்தை எண்ணி ஷெல்லில் காட்டப்படும்.

#உள்படுத்து

# அடங்கும்

#include

#include

முழு எண்ணாக ( )

{

கோப்பு * படி ;

கரி தாங்கல் [ ஐம்பது ] ;

ஸ்பிரிண்ட்எஃப் ( தாங்கல், 'லினக்ஸ் சிஸ்டம் அழைப்பு' ) ;

படி = போபன் ( 'wc -c' , 'உள்' ) ;

fwrite ( தாங்கல், அளவு ( கரி ) ,strlen ( தாங்கல் ) , படி ) ;

மூடவும் ( படி ) ;

}

வரியில் காட்டப்படும் எழுத்துக்கள் “17” ஆகும், ஏனெனில் நாம் மேலே குறிப்பிட்ட சரத்தில் “17” எழுத்துகள் உள்ளன. “wc -c” செயல்முறை இந்த எழுத்துக்களைப் படித்து அவற்றை வெளியீட்டாக அச்சிடுகிறது.

எடுத்துக்காட்டு 4

மேலே உள்ள popen உதாரணம் ஒரு செயல்முறையிலிருந்து மற்றொரு செயலுக்கு தரவை அனுப்புகிறது. இங்கே, ஒரு செயல்முறையிலிருந்து மற்றொரு செயல்முறைக்கான தரவை ஒரு குழாய் வழியாகப் பெறுவோம். நிரலின் முக்கிய செயல்பாடு இடையகத்தை உருவாக்குவதாகும், இது '50' மதிப்புகளை எடுக்கும். பின்னர், 'r' என்ற மாறியை உருவாக்கினோம், அங்கு popen செயல்பாடு செயல்முறையை உருவாக்கியது. கோப்பகத்தின் கோப்புகளை பட்டியலிட “ls” செயல்முறையும், குழாயிலிருந்து தரவைப் படிக்க “r” செயல்முறையும் பயன்படுத்தப்படுகிறது. 'ls' செயல்முறையானது தரவை படிக்க 'r' செயல்முறைக்கு அனுப்புகிறது. இதற்குப் பிறகு, எங்களிடம் fread செயல்பாடு உள்ளது, இது தரவைப் படித்து, தரவை தாங்கலில் சேமிக்கிறது. பின்னர், அச்சு அறிக்கை இடையகத்தில் சேமிக்கப்பட்ட தரவை அச்சிடும்.

#உள்படுத்து

# அடங்கும்

#include

#include

முழு எண்ணாக ( )

{

கோப்பு * ஆர்;

கரி தாங்கல் [ ஐம்பது ] ;


r = popen ( 'ls' , 'r' ) ;

fread ( தாங்கல், 1 , 25 , ஆர் ) ;


printf ( '%s \n ' , தாங்கல் ) ;

மூடவும் ( ஆர் ) ;

}

வேலை செய்யும் கோப்பகத்தில் இருக்கும் கோப்புகளின் '50' எழுத்துக்கள் மட்டுமே இங்கே காட்டப்படும். எனவே, வெளியீடு 50 எழுத்துகளை மட்டுமே கொண்டிருக்கும்.

முடிவுரை

லினக்ஸ் பாப்பன் சிஸ்டம் அழைப்புகளின் விரிவான விளக்கத்தை சி மொழியில் வழங்கியுள்ளோம். நாங்கள் நான்கு உதாரணங்களைச் செயல்படுத்தியுள்ளோம், அங்கு நாங்கள் போபன் செயல்பாட்டைப் பயன்படுத்தியுள்ளோம். நாம் ஒதுக்கிய பயன்முறையின்படி பாப்பன் செயல்பாடு பைப் ஸ்ட்ரீமை வழங்குகிறது. எடுத்துக்காட்டுகளில், கோப்பு கையாளுதல் செயல்பாடுகளான fread மற்றும் fwrite உடன் வாசிப்பு மற்றும் எழுதுதல் ஆகிய இரண்டையும் பயன்படுத்தியுள்ளோம். popen() செயல்பாட்டில் உள்ள நிரலின் பெயரை அதன் முதல் வாதமாகப் பயன்படுத்தியுள்ளோம். இரண்டாவது வாதம் ஒரு கோப்பு “r” என்பது படித்தது அல்லது “w” எழுத்து முறை.