I-Linux / Unix Command Lindela

Lindela yinkqubo ekhuluma kwezinye iinkqubo ezisebenzayo ngokubhekiselele kwiskripthi. Ukulandela iskripthi, Lindela uyazi into enokulindela kwiprogram kwaye yintoni impendulo echanekileyo. Ulwimi oluchaziweyo luhlinzeka ngeendlela zokulawula kunye neendlela eziphezulu zokulawula intetho yencoko. Ukongeza, umsebenzisi angathatha ulawulo kwaye asebenzisane ngokuthe ngqo xa efunwayo, emva kokubuyisela ukulawula kwiskripthi.

Ulindele umxube wokulindela kunye ne-Tk. Iziphatha ngendlela efana nokulindela kunye nesifiso seTk. Lindela kwakhona isetyenziswe ngqo kwiC okanye C ++ ngaphandle kweTcl.

Igama elithi "Lindela" livela kwingcamango yokuthumela / ukulindela ukulandelana okuphakanyiswe yi-uucp, kermit kunye nezinye iinkqubo zokulawula i-modem. Nangona kunjalo, ngokungafaniyo no-Uucp, Lindela i-generalized ukuze iqhutywe njengomyalelo wezinga lomsebenzisi kunye nayiphi na inkqubo kunye nomsebenzi engqondweni. Lindela ukuthetha ngeenkqubo eziliqela ngexesha elifanayo.

Yintoni enokuyenza

Umzekelo, nantsi ezinye izinto umyalelo wokulindela ongakwenza:

Kukho iintlobo ezininzi zezizathu zokuba igobolondo ayikwazi ukwenza le mi sebenzi. Yonke inokwenzeka ngokulindela.

Ngokubanzi, Lindela luncedo ekusebenzeni nayiphina inkqubo efuna ukusebenzisana phakathi kwenkqubo kunye nomsebenzisi. Konke okuyimfuneko kukuba usebenziswano luyakwazi ukubonakaliswa ngokweenkqubo. Lindela kwakhona unokubuyisela umlawuli kumsebenzisi ngaphandle kokumisa inkqubo elawulwayo. Ngokufanayo, umsebenzisi unokubuyisela ukulawula kwiskripthi nanini na.

Ukusetyenziswa

Lindela ukufunda i-cmdfile kwiluhlu lwemiyalelo yokuyenza. Ukulindela kungeniswa ngokucacileyo kwiinkqubo ezixhasa i- #! ukuphawula ngokumakisha iskripthi njengokwenziwa komsebenzi kunye nokwenza umgca wokuqala kwiskripthi:

#! / usr / yendawo / ibini / ilindele -f

Ewe, indlela kufuneka ichaze ngokuchanekileyo apho ikulindele khona ubomi. / usr / yendawo / ibini ngumzekelo nje.

I -c ibhendi iqalisa umyalelo oza kuqhutywa phambi kokuba kukho nawuphi na umbhalo. Umyalelo kufuneka ucatshulwe ukukhusela ukuphulwa kwegobolondo. Olu khetho lunokusetyenziswa ngamaxesha amaninzi. Imiyalelo emininzi ingenziwa ngokukodwa -c ngokuzihlukanisa kunye nama-semicolons. Imiyalelo ikwenziwa ngendlela ebonakala ngayo. Xa usebenzisa i-Expectk, olu khetho luchazwe njenge--command.

I-iiflegi inika imveliso ethile yokuhlola, eyona nto ibonisa umsebenzi wangaphakathi wemithetho njengokuba ulindele kwaye usebenzisane. Le flegi inempembelelo efanayo "ukushicilela kwangaphakathi 1" ekuqaleni kwexesha elilindelweyo Iskripthi, kunye neenguqu zokulindela zinyatheliswa.

I-flag ye--D yenza i-debugger esebenzayo. Ixabiso elipheleleyo kufuneka lilandele. I-debugger iya kuthatha ulawulo phambi kwenkqubo elandelayo ye-Tcl ukuba ixabiso aliyilo okanye ukuba ^ C icinezelwe okanye i-breakpoint is hit, okanye omnye umyalelo we-debugger umyalelo uvela kwisikripthi. Xa usebenzisa i-Expectk, olu khetho luchazwe njenge-Debug.

I--flegi igqitha ifayile apho ufunda khona imiyalelo. Iflegi ngokwayo inokuzikhethela njengoko isebenza kuphela xa usebenzisa #! ukuqwalaselwa, ukuze ezinye iingxabano zinikezelwe kumgca womyalelo. Xa usebenzisa i-Expectk, eli khetho lichazwe njengefayile.

Ngokungagqibekanga, ifayile yomyalelo ifundwa kwimemori kwaye iphunyezwe ngokupheleleyo. Ngamanye amaxesha unqweneleka ukufunda iifayile enye umgca ngexesha. Ukuze unyanzele iifayile ezingabonakaliyo ukuba ziphathwe ngale ndlela, sebenzisa i-b bflegi. Xa usebenzisa i-Expectk, olu khetho luchazwe njenge--ffer.

Ukuba umtya "-" unikezwa njengegama lomgca, igalelo eliqhelekileyo lifundwa endaweni yoko. Sebenzisa "./-" ukufunda kwifayili ebizwa ngokuba "-".

I-iflegi ibangela ukuba ulindelwe ukukhawuleza ngokukhawuleza imiyalelo endaweni yokufunda kwifayili. Ukuphinda kugqityiwe kupheliswa ngumyalelo wokuphuma okanye kwi-EOF. I-iiflethi icingwa ukuba akukho fayile yomyalelo okanye -c isetyenziswa. Xa usebenzisa i-Expectk, olu khetho luchaziwe nje-lungasebenzi.

- ingasetyenziselwa ukudlulisa ukuphela kwezikhetho. Oku luncedo ukuba ufuna ukudlulisela ingxabano enokukhetha inkcazo yakho ngaphandle kokuba ityhilwa nguLindela. Oku kunokusetyenziswa ngokufanelekileyo kwi #! umgca wokukhusela nayiphi na intsingiselo efana neflegi ngokuLindela. Ngokomzekelo, oku kulandelayo kuya kushiya iziphakamiso zangaphambili eziquka igama leskripthi kwi- argv eguqukileyo.

#! / usr / wendawo / ibini / ulindele -

Qaphela ukuba i- getopt yesiqhelo (3) kunye ne-execve (2) iindibano kufuneka zigcinwe xa zongeza iingxabano kwi #! umgca.

Ifayile yexp_library / elindelekileyo.rc ifakwe ngokuzenzekelayo ukuba ikhona, ngaphandle kokuba i-flag ye-N isetyenziswe. (Xa usebenzisa i-Expectk, olu khetho luchazwe njenge -NORC.) Ngokukhawuleza emva koko, ifayile ~ / .expect.rc ichongiwe ngokuzenzekelayo, ngaphandle kokuba i-flag isetyenziswe. Ukuba uguquko lwe-DOTDIR luchazwa, luphathwa njenge-directory kwaye .expect.rc ifundwa ukusuka apho. Xa usebenzisa i-Expectk, olu khetho luchongiwe -norc. Ukukhangela kwenzeka kuphela emva kokusebenzisa nayiphi na i-flags.

-b kubangela ukuba ulindele ukushicilela inombolo yenguqu kwaye uphume. Iflegi ehambelanayo kuLindelwe, esebenzisa amagama epegi elide, yi -version.

I-args ezikhethiweyo zakhiwa uluhlu kwaye zigcinwe kwi-variable ebizwa nge-argv kwaye. i-argc iqaliswa ubude be-argv.

I-Argv0 ichazwa ngokuba ligama leskripthi okanye ibhinari ukuba akukho script esetyenziswayo. Ngokomzekelo, ezi zilandelayo ziprinta igama lombhalo kunye neengxoxo zokuqala ezintathu:

thumela_user "$ argv0 [lrange $ argv 0 2] \ n"

Mithetho

Ukulindela usebenzisa uLwimi loLwimi loLwimi. I-Tcl inikeza ukuhamba kokulawula (ukuba, ngenxa yokuphuka), ukuphononongwa kwenkcazo kunye nezinye izinto ezinjenge-recursion kunye nencazelo yenkqubo. Imiyalelo esetyenziswa apha kodwa ingachazwa (isetyenziswe, ukuba, yenza) imilayezo yeTcl. Lindela isekela imiyalelo eyongezelelweyo. Ngaphandle kokuba kuchazwe ngenye indlela, imiyalelo ibuyisela intambo engenanto.

Imiyalelo ibalwe nge-alfabhethi ukuze bakwazi ukukhawuleza. Nangona kunjalo, abasebenzisi abatsha bangakufumana kulula ukuqala ngokufunda iinkcazo zokutshala, ukuthumela, ukulindela kunye nokusebenzisana, kuloo myalelo.

ukuvala [-slave] [-onexec 0 | 1] [-i spawn_id]

uvala uxhumano kwinkqubo yangoku. Iiprogram ezininzi zokusebenzisana ziya kubona i- EOF kwi-stdin yazo kwaye iphume; Ngaloo ndlela isondele ngokuqhelekileyo ukwenzela ukubulala inkqubo ngokunjalo. I-ifulegi ichaza inkqubo yokuvala ifana ne-spawn_id egama layo.

Bobabini balindela kwaye baxhamlanise baya kuhlola xa inkqubo yangoku iphuma kwaye iyakwenza ngokugqithiseleyo, kodwa ukuba uyayibulala inkqubo , yithi, "bulala i-$ pid", kufuneka ucace ngokuthe ngqo .

I-flag ye-onexec inquma ukuba i-id engabonakaliyo ivaliwe naziphi na iinkqubo ezitsha ezizalisiweyo okanye ukuba inkqubo ifakwe. Ukushiya i-id evulekile, sebenzisa ixabiso 0. Inani elingenanto elingu-integer linamandla okukhusela kuyo yonke intsha iinkqubo.

Ifulegi ye-flavour ivala ikhoboka elidibanisa ne-id ye-spawn. Xa uxhulumaniso luvaliwe, ikhoboka livaliwe ngokuzenzekelayo nokuba livulekile.

Kungakhathaliseki ukuba uxhumano luvaliwe ngokucacileyo okanye ngokucacileyo, kufuneka ubize ulinde ukucima iprogram yenkqubo yekernel ehambelanayo. Umyalelo osondeleyo awubizi ukulinda kuba akukho siqinisekiso sokuthi ukuvala inkqubo yoxhumano kuya kubangela ukuba iphume.

ukukhuphaza [[-now] 0 | 1]

lawula i-debugger ye-Tcl ikuvumela ukuba uphumelele kwizitatimenti uze usethe i-breakpoints.

Ngaphandle kweengxoxo, i-1 ibuyiselwa ukuba i-debugger ayisebenzisi, ngaphandle koko i-0 ibuyiselwe.

Ngengxabano e-1, i-debugger iqalile. Ngempikiswano engama-0, i-debugger imisiwe. Ukuba ingxabano engama-1 ilandelwa yi-ye-flag, i-debugger iqaliswe ngokukhawuleza. Ngaphandle koko, i-debugger iqaliswe ngxelo esilandelayo yeTcl.

Umyalelo wesiphumo sokuguqula awuyi kutshintsha naziphi na iingcingo. Thelekisa oku ukuqala ukulindela nge-flag yeD.

Umyalelo wokunqamula umgca unqamle inkqubo enqamlekileyo esuka kwisiphelo . Iyaqhubeka isebenza ngasemva. Inkqubo inikezelwa yinkqubo yenkqubo yayo. Umgangatho we-I / O uphinde uqondiswe kwi / dev / null .

Isiqendu esilandelayo sisebenzisa ukuxhuma ukuqhubeka nokusebenzisa iskripthi kwimvelaphi.

ukuba {fork] = =}} phuma ukuxhuma. . .

Iskripthi esilandelayo sifunda iphasiwedi kwaye iqhuba iprogram nganye iyure efuna iphasiwedi rhoqo xa isebenza. I-script inikeza iphasiwedi ukuze uthayiphe kuphela kanye.

thumela_user "iphasiwedi? \" ukulinda -a "(. *) \ n" for {} 1 {} {xa {ifk] = 0} {sleep 3600; qhubeka} nqakraza spawn priv_prog lindela iphasiwedi: thumela "$ expect_out ( 1, umtya) \ r ". . . Phuma }

Inzuzo yokusebenzisa ukuxhuma kwi-shell yeprogram ye-shell (&) yinto elindelekileyo ingalondoloza iiparitha zamagatya ngaphambi kokunqakraza kwaye emva koko zizisebenzise kwi-ptys entsha. Nge &, Lindela ayinalo ithuba lokufunda iiparitha zee terminal njengoko i-terminal isele ixhunyiwe ngexesha lilindele lithatha ulawulo.

phuma [-opts] [isimo]

Ubangela ukuba ulindele ukuphuma okanye ngokunye ulungiselele ukwenza njalo.

I-- onexit iflegi yenza ukuba ingxabano elandelayo isetyenziswe njengomphathi wokuphuma. Ngaphandle kwengxabano, umthengisi wokuphuma okhoyo uya kubuyiselwa.

I-- nove ifulegi ibangela ukuba ulindele ukulungiselela ukuphuma kodwa unqande ukufutshane ukubuyisela ukulawula kwinkqubo yokusebenza. Umqhubi ochazwe ngumsebenzisi ophumayo usebenza kunye nabaxhasi abangaphakathi. Ayikho enye ilindele ukuba imilayezo ifanele iqhutywe. Oku kuyiluncedo ukuba usebenza Ulindele nezinye izandiso zeTcl. Umtoliki wangoku (kunye nefestile ephezulu ukuba kwimeko yendalo yeTk) uhlala ukuze ezinye izandiso zeTcl zihlambuluke. Ukuba ukulindela ukuphuma kubizwa kwakhona (nangona oku kungenzeka), abaphathi ababuyiselwa kwakhona.

Ekuphumeni kwayo, zonke iinkcukacha ezinxulumene neenkqubo ezizalwe zivaliwe. Ukuvalwa kuya kufunyanwa njenge-EOF ngokuzaliswa kweenkqubo. ukuphuma akuthathi ezinye izenzo ngaphaya kwento eqhelekileyo ye-_exit (2). Ngaloo ndlela, iinkqubo ezingakhange ziqwalasele i-EOF zinokuqhubeka ziqhuba. (Iimeko ezahlukeneyo zibalulekile ekunqumeni, umzekelo, ziphi na izibonakaliso kwinkqubo ezalisiweyo eya kuthunyelwa, kodwa ezi zixhomekeke kwinkqubo, zibhalwe phantsi kokuphuma (3).) Iinkqubo eziqhubekileyo eziqhubekayo ziza kuzuza ilifa nge-init.

isimo (okanye i-0 ukuba singacacisiwe) sibuyiselwa njenge-exit status of Expect . ukuphuma kuphelelwa ngokupheleleyo xa ukuphela kweskripthi kufinyelelwe.

exp_qhubeka [-continue_timer]
Umyalelo we- exp_intinue uvumela ukuba uqhubeke usebenza ngaphandle kokubuya ngendlela eqhelekileyo. Ngokungagqibekanga i- exp_intinue ivuselela i-timer yokuphuma . I-- interinue_timer ifulegi inqanda i-timer ukuba iqale kwakhona. (Khangela ulindele ulwazi olungaphezulu.)

exp_ yangaphandle [-f fayile] xabiso
ibangela imiyalelo eyongezelelweyo yokuthumela ulwazi lokuxilonga lwangaphakathi ngaphakathi kulindeleke ukuba lube ne- stderr ukuba ixabiso aliyilo . Le mveliso ikhutshaziwe ukuba ixabiso li-0. Ulwazi loxilongo lubandakanya zonke iimpawu ezifunyenweyo, kwaye zonke iinzame ezenziwe ukufanisa umphumo okhoyo malunga neepateni.

Ukuba iifayile ezikhethiweyo zinikezelwa, zonke iziqhelo eziqhelekileyo kunye nokukhutshwa kombukiso kubhaliweyo kule fayile (kungakhathaliseki ixabiso lentengo ). Nayiphina ifayile yokugqibela yokuhlola ivalwe.

I-flag yeflekisi ibangela i-ex_ yangaphandle ukuba ibuyisele inkcazo yezona zinto zichazwe kungekudala ezingenalo ulwazi.

exp_open [args] [-i spawn_id]
ubuyisela isihlomelo sefayile ye-Tcl ehambelana ne-original id idla. I-identifier yefayile ingasetyenziselwa ukuba ivuliwe ngumyalelo ovulekileyo weTcl. (I-ID engabonakaliyo ayifanele isetyenziswe. Ukulinda akufanele kwenziwe.

Ifulegi ye -leopopen ishiya i-id evulekile ukufikelela kuyo ngokulindela imiyalelo. Ukulinda kufuneka kuqhutywe kwi-id yomhlaba.

exp_pid] [-i spawn_id]
ubuyisela inqubo yenkqubo ehambelana nenkqubo okwenziwa ngoku. Ukuba i-iiflethi isetyenzisiweyo, i- pid ibuyele ihambelana neyo-id ene-spawn.

exp_send
yindawo yokuthumela .

exp_send_error
yindlela yokuthumela_error .

exp_send_log
yindawo yokuthumela_log .

exp_send_tty
yindawo yokuthumela_tty .

exp_send_user
luyindawo yokuthumela umsebenzisi- myalezo .

exp_version [[-exit] inguqulelo]
luncedo ekuqinisekiseni ukuba iskripthi iyahambelana nenguqulo ekhoyo yokulindela.

Ngaphandle kweengxabano, inguqu yangoku yokulindela ibuyiselwe. Le nguqulo ingenakho ikhowudi kwi script yakho. Ukuba ngokwenene uyazi ukuba awusebenzisi izixhobo zeenguqulelo zakutshanje, ungacacisa inguqulo yangaphambili.

Iinguqu ziqulethwe ngamanani amathathu ahlukaniswe ngamachaphaza. Okokuqala yinani elikhulu. Izibhalo ezibhalwa kwiinguqulelo zeLindelo kunye nenani eliphambili liya kusebenza ngokuqinisekileyo. exp_version ubuyisela impazamo ukuba iinombolo ezinkulu azifani .

Okwesibini yinani elincinci. Izibhalo ezibhaliweyo zenguqulo encinci kwinani elincinci kunokuba inguqulelo yangoku inokuxhomekeka kwinto ethile entsha kwaye ingase isebenze. exp_version ubuyisela impazamo ukuba amanani amakhulu ahambelana, kodwa inamba encinane yesibrari inkulu kuneleyo yokulindela ilindele .

Okwesithathu yinani elingadlala nxalenye kwingqamaniso yenguqu. Nangona kunjalo, kunyuselwa xa Ulindelwe ukuhanjiswa kwesoftware kwatshintshi nangayiphi na indlela, njengamaphepha angaphezulu okanye ukulungiswa. Kubuyiselwa kwi-0 nganye kwinguqu encinci entsha.

Nge- kopa ifulegi, Lindela ukuprintisa iphutha kunye nokuphuma ukuba inguqulo ingekho kumhla.

kulindeleke ukuba [[-pts] i-pat1 body1] ... [-opts] patn [bodyn]
lilinde kude enye yeepateni ifane nomphumo weenkqubo ezizalisiweyo, ixesha elidlulileyo lidlule, okanye ukuphela kwefayili kubonakala. Ukuba umzimba wokugqibela awunanto, unokushiywa.

Iipateni ezisuka kutshanje zilindele_ngaphambi komyalelo zisetyenziswe ngokupheleleyo phambi kwamanye amaphetheni. Iipateni ezisuka kutshanje kulindeleke_ukulandela umyalelo zisetyenziswe ngokupheleleyo emva kwamanye amaphetheni.

Ukuba iingxabano kumgaqo wokulindela wonke zifuna ngaphezulu komgca omnye, zonke iingxabano ziyakwazi "ukukhangela" kwelinye ukwenzela ukuba ugweme umgca ngamnye ngomgca wokubuyela emuva. Kwimeko enye, iindawo eziqhelekileyo ze-Tcl ziza kwenzeka nangona i-braces.

Ukuba iphethini ligama elingundoqo, iqumrhu elihambelanayo liphunyezwa ekupheleni kwefayile. Ukuba iphethini lixesha lokuphumla kwegama elingundoqo, umzimba ohambelanayo uqhutywa ngexesha lokuphumla. Ukuba akukho lizwi elingundoqo lokusebenzisa ixesha eliqhelekileyo lisetyenzisiweyo, isenzo esingenanto esilungileyo senziwa ngokukhawuleza. Isikhathi sokuphela esingapheliyo imizuzu eyi-10 kodwa singasetwa, umzekelo ukuya ku-30, ngomyalelo othi "setha ixesha lokugqibela" 30. Ukuphumla okungapheliyo kunokunyulwa lixabiso -1. Ukuba iphethini ligama elingundoqo elingagqibekanga , umzimba ohambelanayo uphathwa ngexesha lokuphumla okanye ukuphela kwefayile.

Ukuba umzekelo ufanisa, ke umzimba ohambelanayo uqhutywa. kulindeleke ukubuyisa umphumo womzimba (okanye intambo engenanto ukuba akukho mzekelo ifanelwe). Kwimeko apho imilinganiselo yamaphetheni amaninzi, obonakalayo wokuqala usebenzisa ukukhetha umzimba.

Ngalinye ixesha ixesha elitsha lifika, lithelekiswa nomzekelo ngamnye kwindlela abadweliswe ngayo. Ngaloo ndlela, unokuvavanya ukungabikho komdlalo ngokwenza iphethini yokugqibela into eqinisekisiwe ukuba ivele, njengokukhawuleza. Kwiimeko apho kungekho nangoko, kufuneka usebenzise ixesha lokuhamba (njengokuba ungathanda ukuba usebenzisana ngesandla).

Iipatheni zichazwe ngeendlela ezintathu. Ngokungagqibekanga, iipateni zichazwe njenge-Tcl's string match match . (Iipateni ezinjalo zifana neefowuni zeC-shell eziqhelekileyo zibizwa ngokuthi "ihlabathi"). I-- ll iflegi isenokusetyenziswa ukukhusela iipatheni ezingenjalo zilindele ukuba amaflegi akwenze oko. Nawuphi na umzekelo oqala nge "-" kufuneka ukhuselwe ngale ndlela. (Zonke iintambo eziqala ngo-"-" zigcinwe ukhetho oluzayo.)

Ngokomzekelo, isiqhekeza esilandelayo sifuna ukungena ngemvume ngempumelelo. (Qaphela ukuba ukuphazamiseka kuthathwa njengenkqubo echazwe kwenye indawo kwisikripthi.)

kulindeleke {uxakeke {ubeka uxakekile \ n; exp_continue} yahluleka ukuphazamiseka "iphasiwedi engavumelekanga" yokukhupha ixesha lokuyeka elixhunyiwe}

Iingcaphuno ziyimfuneko kwipateni yesine kuba iqulethe indawo, eyayizahlula umzekelo kwenzo. Iipatheni kunye nesenzo esifanayo (njengesi-3 kunye no-4) zifuna ukuhlomela kwakhona izenzo kwakhona. Oku kungakuphepha ngokusebenzisa iipatheni ze-regexp-style (bona ngaphantsi). Ulwazi oluthe xaxa malunga nokwenza iipateni zesitayela somhlaba zingatholakala kwi-TCL.

Iipateni zesitayela seRegexp zilandela i-syntax echazwe ngu-Tcl's regexp (mfutshane "umyalelo oqhelekileyo"). Iipatheni ze-regexp zenziwe ngeflegi -re . Umzekelo ongaphambili ungabhalwa kwakhona usebenzisa i regexp njenge:

kulindeleke {uxakeke {ubeka uxakekile \ n; exp_continue} -re "yahluleka | iphasiwedi engavumelekanga" ichithe ixesha lokuyeka elixhunyiwe}

Zombini iintlobo zeepateni "azihambisani". Oku kuthetha ukuba iipatheni azifanelanga ukufanisa yonke intambo, kodwa ingaqalisa kwaye iphele umdlalo naluphi na umtya (ngokukhawuleza ukuba yonke into iyafana). Sebenzisa ^ ukufanisa ukuqala komtya, kunye ne-$ ukufanisa ukuphela. Qaphela ukuba ukuba ungalindelanga ukuphela komtya, iimpendulo zakho ziyakwazi ukuphela ngokukhawuleza phakathi komtya njengoko zikhankanywe kwinkqubo ezalisiweyo. Ngelixa uvelisa iziphumo ezichanekileyo, umphumo ungabonakala ungaqhelekanga. Ngaloo ndlela, ukusebenzisa i-$ kukhuthazwa ukuba unako ukuchaza ngokucacileyo abalinganiswa ekupheleni komtya.

Qaphela ukuba kubahleli abaninzi, i ^ ne-$ zifanisa ukuqala nokuphela kwemigca ngokulandelana. Nangona kunjalo, kuba kulindeleke ukuba akukho umgca wokuxhomekeka kumgca, abo babalingiswa bafanisana nokuqala kwedatha (ngokuchasene nemigqa) okwangoku kulindeleke ukuba ibhathane. (Kwakhona, yibona inqaku elingezantsi "kwi-indigestion yenkqubo.")

Ifayile ye-- ex ibangela ukuba iphethane ifaniswe njengetambo "ngqo". Akukho ncazelo ye ^, ^, njl eyenziwe (nangona iikopi eziqhelekileyo zeTcl kufuneka zigcinwe). Iipateni ezichanekileyo zihlala zingasebenzi.

I-flag ye-- ocode yenza kubakho abalinganiswa abakhulu beqingqiweyo ukuba baqhathanise nanjengokuba bengabalinganiswa bezantsi . Umzekelo awuchaphazelekayo.

Ngoxa ufunda umkhiqizo, ngaphezu kwe-2000 bytes unokunyanzelisa ii -tes ezenziwe ngaphambili ukuba "zilibale". Oku kungatshintshwa ngohlobo lomdlalo_max . (Qaphela ukuba ixabiso elikhulu kakhulu linganciphisa umtshini wendlela.) Ukuba i- patlist igcwele_i-bhutri , umzimba ohambelanayo uyenziwa ukuba umdlalo -max bytes ufunyenwe kwaye akukho namanye amaphetheni ahambelanisiweyo. Kungakhathaliseki ukuba ingasetyenzisiweyo igama eliyi - full - buffer , abalinganiswa abaliliweyo babhaliwe ukuba balindele_ku (buffer).

Ukuba i- patlist iyinqaku elingundoqo elingenanto , kwaye i-nulls ayivunyelwe (ngokusebenzisa umyalelo we- remove_nulls ), umzimba ohambelanayo uyenziwa ukuba i- ASCII enye ifanelwe. Akunakwenzeka ukufanisa i-0 bytes nge-glob okanye ipatheni ye-regexp.

Xa ehambelana nephethini (okanye i-eof okanye i-full_buffer), nayiphi na into ehambelana nayo kunye nemveliso yangaphambili engagqithwanga igcinwa kwizinto eziguquguqukileyo zikulindele_iyo (buffer) . Ukufikelela kwimidlalo engama-regexp engama-9 igcinwa kwiimpawu ezilindelekileyo_uku (1, intambo) ngokulindela_out (9, umtya) . Ukuba i- indiza yeflegi isetyenziswe ngaphambi komzekelo, ama-indices okuqala kunye nokuphela (kwifomu ifanelekileyo ye- lrange ) yeemichilo ezili-10 igcinwa kwiintlobo ezilindelekileyo_uku (X, qalisa) kwaye ulindele_kuye (X, ekupheleni) apho iX idijithi, ihambelana nesithuba esisezantsi kwiphakheji. 0 ibhekisela kwimicu ehambelana nomzekelo wonke kwaye iveliswa kwipatheni yehlabathi kunye neepatheni ze-regexp. Umzekelo, ukuba inkqubo ivelise umphumo we "abcdefgh \ n", umphumo we:

lindela "cd"

kunjengekukuba izitatimende zilandelayo ziyenzile:

setha ulindele_u (0, umtya) cd usethe u-wait_out (buffer) abcd

kwaye "efgh \ n" ishiywe kwisihluthulelo somkhiqizo. Ukuba inkqubo ivelise umkhiqizo "abbbcabkkkka \ n", umphumo we:

lindela -iindidi- "b (b *). * (k +)"

kunjengekukuba izitatimende zilandelayo ziyenzile:

setha ulindele_u (0, qalisa) 1 ubeke ilindele_ku (0, ekupheleni) 10 ubeke ilindele_i (0, intambo) bbbcabkkkk ubeke ilindele_uku (1, qalisa) 2 ubeke ilindele_kuye (1, ekupheleni) 3 umele ulindele_kuye (1, umtya) (2, qalisa) 10 umele ulindele_ukuphela (2, ekupheleni) 10 umele ulindele_uku (2, umtya) k ubeke ilindele_i (buffer) abbbcabkkkk

kwaye "i \ n" ishiywe kwisihluthulelo somkhiqizo. Umzekelo "*" (kunye -re "." ") Iya kuhlutha isiphumo siphumo ngaphandle kokufunda nayiphi na imveliso evela kwinkqubo.

Ngokuqhelekileyo, imveliso ehambelana nayo ilahlwa kwii-Expected buffers zangaphakathi. Oku kunokuthintela ngokuqulunqa iphethini kunye ne- flag ye- flag. Le flegi incedo ngokukhethekileyo ekuhlolweni (kwaye inokuthi isicatshulwa "-not" ngokulula xa uzama).

I-ID engabonakaliyo ehambelana nomkhiqizo ohambelanayo (okanye i-eof okanye i-full_buffer) igcinwa kulindeleke_out (spawn_id) .

I- kwixesha leflethi lidala umyalelo wokuba ulindele ukusetyenziswa kwexabiso elilandelayo njengexesha lokuphumla endaweni yokusebenzisa ixabiso lentengo yokuphumla.

Ngokungagqibekanga, iipateni zihambelana nokuchasene nemveliso evela kwinkqubo yangoku, nangona-iiflegi imemezela ukuba imveliso evela kuluhlu olubizwa ngokuba yi-spawn_id luyakufanisana naluphi na iipateni ezilandelayo (ukuya kutsho -i ). Uluhlu lwe-spawn lufanele lube uluhlu oluhlukileyo lwe-whitespace ye-spawn_ids okanye uguquko olubhekiselele kuloluhlu lwe-spawn_ids.

Ngokomzekelo, umzekelo olandelayo ulinde "uxhumeke" ukusuka kwinkqubo yangoku, okanye "uxakeke", "uhlulekile" okanye "iphasiwedi engavumelekanga" evela ku-spawn_id egama li-$ proc2.

kulindeleke {{i $ proc2 busy} ubeka uxakekile \ n; exp_continue} -re "yahluleka | iphasiwedi engavumelekanga" ichithe ixesha lokuyeka elixhunyiwe}

Ixabiso lentlukwano yehlabathi jikelele nayiphi na i- spawn_id ingasetyenziselwa ukufanisa amaphetheni nanoma yintoni i-spawnids ebizwa ngokuba yiyo zonke ezinye iifayile ezikhoyo kumyalelo okhoyo. I-spawn_id esuka kwi-iiflethi engenawo umzekelo ohambelanayo (oko kukuthi, ilandelwe ngokukhawuleza enye -i ) yenziwe ifumaneke nayiphi na iipatheni ngokufanayo ilindele umyalelo ohambelana nayo nayiphi na i- spawn_id.

I-iiflethi inokuthi iguqule igama lomhlaba jikelele kwiimeko apho uguquko olufundwayo lufundwa uluhlu lwama-ids. Uguquko luya kuphinda lugqitywe. Oku kunika indlela yokutshintsha umthombo we-I / O ngelixa umyalelo usebenza. I-spawn ids ezinikezwa ngale ndlela zibizwa ngokuthi "ezingekho ngqo" i-ids spawns.

Izenzo ezinjengekhefu kunye nokuqhubeka nezixhobo zokulawula izizathu (oko kukuthi, ukuze , i- proc ) ziphathe ngendlela eqhelekileyo. Umyalelo we- exp_intinue uvumela ukuba uqhubeke usebenza ngaphandle kokubuya ngendlela eqhelekileyo.

Oku kunceda ukuphepha i- loops ecacileyo okanye ngokuphindaphindiweyo ulindele iingxelo. Umzekelo olandelayo uyinxalenye yeqhekeza ukuzenzekelayo i-rlogin. I- exp_intinue igweme ukuba kubhale isitatimende sesibini esilindele (ukukhangela kwakhona ukukhawuleza kwakhona) ukuba i-rlogin ikhuthaza iphasiwedi.

kulindeleke {iphasiwedi: {stty -echo uthumele umsebenzisi "iphasiwedi (i-$ user) kwi-host host:" lindela_user -re "(. *) \ n" thumela_user "\ n" thumela "i-$ ukulinda_out (1, string) \ r" echo exp_continue} engalungile {send_user "iphasiwedi engavumelekanga okanye i-akhawunti \ n" exit} ixesha lokuphumla {ukuthumela umxhasi "ukuxhomeka kwee-$ kwiphepha eliphumayo \ n" ukuphuma} eof {send_user \ "ukuxhumeka kumsingathi kwehlulekile: $ kulindeleke_out (buffer)" phuma} i-$ prompt}

Ngokomzekelo, le fragment ingasinceda umsebenzisi ukhombise ukusebenzisana okusetyenziswe ngokuzenzekelayo. Kule meko, i-terminal ifakwa kwimodi eluhlaza. Ukuba umsebenzisi ucinezela "+", uguquko luyanda. Ukuba "p" icinezelekile, imbuyekezo eninzi ithunyelwa kwinkqubo, mhlawumbi ukuyikhupha ngandlela-thile, kwaye "i" ivumela umsebenzisi ukuba asebenze nenkqubo, ngokukhawuleza ukuba ulawulo oluvela kwiskripthi. Kwimeko nganye, i- exp_intinue ivumela ukuba i-current ikulindele ukuqhubeka ifanisi yokulandelana emva kokusebenzisa inyathelo langoku.

isitya esingenayo -echo silindele-emva kwe-{-i $ user_spawn_id "p" {thumela "\ r \ r \ r"; exp_continue} "+" {incr foo; exp_continue} "i" {sebenzisana; exp_continue} "shiya" phuma}

Ngokungagqibekanga, i- exp_ iqhosha ivuselela i-timer yokuphumla . I-timer ayiyi kuqaliswa kwakhona, ukuba i- exp_iyo yonke into ibizwa nge-flag -timinue_timer .

lindele_ekude [elindele_args]
isebenza ngokufanayo nokulindela- ngaphandle kokuba ngaphandle kokuba iipateni zivela zombini zilindela kwaye zilindele-emva koko ziyafana , iprotected expectation is used. Jonga ulindele_ngaphambi komyalelo wolwazi olungakumbi.

kulindeleke-ukuhlaselwa kwendawo [ukucinga_izinto]
ithatha iingxoxo ezifanayo njengoko zilindele , nangona zibuya ngokukhawuleza. Iipatheni zivavanywa naliphi na umrhumo omtsha ofikayo. Ukuphumla kwendlela kunye nokungagqibekanga akunakuncedo ukulindela-ukubuyela kwendawo kwaye ilahlwa yicala . Ngaphandle koko, umlindelo- umyalelo wendawo usebenzise ukulindela-ngaphambi kwaye ulindele_eepatheni emva kokuba ukulindele .

Xa ulindele- izenzo zokuhlaziywa zivandlakanywa, ukuqhutyelwa kwemvelaphi ye-id efanayo ye-spa ivalwe. Ukucwangciswa kwendawo yangasemva kuvuliwe xa isenzo sigqiba. Nangona ukucocwa kwemvelaphi kuvaliwe, kunokwenzeka ukwenza (ngaphambili) kulindeleke kwi-id efanayo ye-spa.

Akunakwenzeka ukwenza ukulindela ngelixa ulindela- indawo yokubuyiselwa kuyo ivuliwe . kulindeleke-ukubuyela kwendawo ye-id idlwengulwa ngokumemezela elitsha ukulinda-indawo yangasemva ene-id efanayo. Ukuvakalisa ukuba ulindele-indawo engenazo iprojekti iyakususa id idla yecala evela kumandla okufanisa amaphetheni ngasemva.

kulindele_ngaphambi [ukulinda_args]
ithatha iingxoxo ezifanayo njengoko zilindele , nangona zibuya ngokukhawuleza. Amabini amanyathelo amaphetheni avela kutshanje kulindeleke -ngaphambi kokuba i-id efanayo ye-spa yongezwe ngokucacileyo nakweliphi na elilandelayo elindele imiyalelo. Ukuba umzekelo ufanelana, uphathwa njengokuba wawucacisiwe kumyalelo wokulindela ngokwawo, kwaye umzimba odibeneyo uyenziwa kwimeko yomyalelo wokulindela . Ukuba iipateni zombini zilindele_ngaphambili kwaye zilindela ziyakwazi ukulingana, kulindeleke - phambi kwephethini isetyenziswe.

Ukuba akukho fanethi ichazwe, i-ID engabonakaliyo ayihlolwe nayiphi na ipatheni.

Ngaphandle kokuba iqhutywe yi-iiflegi, lindela_phambi kweepateni umdlalo ngokuchasene ne-ID echazwe ngexesha elilindelekileyo - ngaphambi komyalelo wenziwa (kungekhona xa iphethini yayo ifanelana).

I-flag ye-flag yenza ukuba kulindeleke- ngaphambi kokubuyisela iinkcukacha ezikhoyo zangoku kweepatheni eziya kufana nazo. Ngokungagqibekanga, ibika nge-ID yangoku. Ingcaciso ekhethiweyo ye-ID engenayo inganikezelwa ngolwazi kwi-id ye-spawn. Umzekelo

lindele_ngaphambi -nfo -i $ pro

Kwona nto inokuthi inikwe enye ingcaciso ye-ID. Iflegi-engqinanga igxininisa i-ID engenazo ezizodwa kuphela ezichaziweyo.

Esikhundleni senkcazo ye-id, iflegi "-iyo yonke" iya kubangela "-info" ukuba ibhengeze kuwo onke ama-ids.

Imveliso ye-flag ye-flag ingasetyenziswa kwakhona njengengxabano yokulindela-ngaphambi.

lindela_tty [lindela_args]
lifana nokulindela kodwa lifunda abalinganiswa abavela kwi / dev / tty (okt keystrokes ukusuka kumsebenzisi). Ngokungagqibekanga, ukufundwa kwenziwa kwindlela yokupheka. Ngaloo ndlela, imida kufuneka iphele ngokubuya ukuze kulindeleke ukuba ubone. Oku kungatshintshwa nge- stty (jonga umyalelo womgca ngaphantsi).

lindela_ser [elindele_args]
lifana nokulindela kodwa lifundela abalinganiswa be-stdin (oko kukuthi i-keystrokes ukusuka kumsebenzisi). Ngokungagqibekanga, ukufundwa kwenziwa kwindlela yokupheka. Ngaloo ndlela, imida kufuneka iphele ngokubuya ukuze kulindeleke ukuba ubone. Oku kungatshintshwa nge- stty (jonga umyalelo womgca ngaphantsi).

ifom
kudala inkqubo entsha. Inqubo entsha yikhopi echanekileyo yangoku ikulindele inkqubo . Kwimpumelelo, iifolokhwe zibuyela kwi-0 kwinkqubo entsha (yomntwana) kwaye ibuyise inkqubo yesazisi kwinkqubo yomntwana kwinkqubo yomzali. Ukungaphumeleli (ngokungabikho ngenxa yokusilela kwemithombo, umz., Ukutshintsha indawo, imemori), ukubuyisela ifom -1 kwinkqubo yomzali, kwaye akukho nxaxheba yomntwana eyenziwe.

Iimpawu ezifakiweyo ziphuma ngaphandle komyalelo wokuphuma , nje ngenkqubo yokuqala. Iinkqubo ezifakiwe zivunyelwe ukubhala kwiifayile zelogi. Ukuba awukhubaza ukulungisa okanye ukungena kwiinkqubo ezininzi, umphumo ungadideka.

Ezinye iinkqubo zokuphunyezwa zingadideka ngabafundi abaninzi kunye nabalobi, kwanexeshana. Ngaloo ndlela, ikhuselekile kakhulu kwimfoloko ngaphambi kokuzaliswa kweenkqubo.

udibanisa [umtya1 womzimba1] ... [stringn [bodyn]]
unikezela ukulawula inkqubo yangoku kumsebenzisi, ukwenzela ukuba izitshixo zithunyelwe kwinkqubo yangoku, kwaye u-stdout kunye ne-stderr yenkqubo ekhoyo ibuyiselwa.

Izibini zomzimba zomzimba zingachazwa njengeengxoxo, apho umzimba uphathwa xa umtya ohambelana nawo ungeniswa. (Ngokungagqibekanga, umtya awuhambiswanga kwinkqubo ekhoyo.) Umyalelo wokutolika ucinga, ukuba umzimba wokugqibela ulahlekile.

Ukuba iimpikiswano kuzo zonke iinkcazo zokusebenzisana zidinga umgca omnye, zonke iingxabano ziyakuthi "ziboshwe" kwelinye ukwenzela ukuba ugweme umgca ngamnye ngomgca wecala. Kwimeko enye, iindawo eziqhelekileyo ze-Tcl ziza kwenzeka nangona i-braces.

Ngokomzekelo, umyalelo olandelayo usebenza ngokubambisana nale mibhanqa yomzimba yecandelo elandelayo ichazwe: Xa ^ Z icinezelwe, Lindela imisiwe. (I- idirefti ye-reset ibuyisela kwakhona iimodyuli zokugcina.) Xa ^ A icinezelekile, umsebenzisi ubona "uthayiphe ulawulo-A" kwaye inkqubo ithunyelwe i- ^ A. Xa i-$ icinezelekile, umsebenzisi ubona umhla. Xa ^ C icinezelwa, Lindela ukuphuma. Ukuba "i-foo" ifakiwe, umsebenzisi ubona "ibha". Xa i ~~ icinezelekile, Lindela umtoliki ugijima phakathi.

setha u-CTRLZ \ 032 usebenze {-setele i $ CTRLZ {exec kill -STOP [pid]} \ 001 {send_user "uthayiphe ulawulo-A \ n"; thumela i- "\ 001"} $ {send_user "Umhla [ifomathi yewashi [imizuzwana yeeyure]."}} \ 003 phuma foo {send_user "ibha"} ~~}

Kwiibini zomzimba zechungechunge, izicwangciso ziyahambelana nomyalelo ezidweliswe njengeengxabano. Amagqabantshintshi ahambelana nxamnye angathunyelwa kwinkqubo ekhoyo ngokulindela intsalela ezayo. Ukuba ngaba abantu bangeniswa ngolu hlobo kangangokuthi akukho nto ingaba ngumdlalo, kuphela inxalenye yomtya oya kuthunyelwa kwinkqubo engenakuqala olunye umdlalo. Ngaloo ndlela, imicu engumgca weemidlalo ekhethekileyo ingalingana kamva, ukuba imilingo yangaphambili eyayilinga ukudibanisa ekugqibeleni ihluleka.

Ngokungagqibekanga, ukulingana kwefowuni kuchanekileyo ngaphandle kwamakhadi asendle . (Ngokwahlukileyo, umyalelo wokulindela usebenzisa iipateni zesitayela ze- globally ngokungagqibekanga.) I-flag ye -ex ingasetyenziswa ukukhusela iipatheni ezingenjalo zihambelane neefowuni ze-flags ekubeni zenze njalo. Nawuphi na umzekelo oqala nge "-" kufuneka ukhuselwe ngale ndlela. (Zonke iintambo eziqala ngo-"-" zigcinwe ukhetho oluzayo.)

I-ibhendi ibangela umtya ukuba uguqulelwe njengomzekelo we-regexp-style. Kule meko, i-substrings efanayo igcinwa kwi-variable- interaction_out efanayo kwindlela ilindele ukugcina isiphumo sayo kwi-variable ikulindele_iyo . I- iifayile zeflegi zixhaswa ngokufanayo.

I-pattern yefowuni ibonisa isenzo esenziwa ekupheleni kwefayili. Iphethini e-eof ehlukeneyo inokulandela i-flag yokuphuma apho imeko ifaniswe ukuba i-eof ifunyenwe ngenkathi ibhala umkhiqizo. Isenzo esingagqibekanga se- "return", ukuze ukusebenzisana kubuyele kwi-EOF.

Ukuphumla kwipatheni kufaka ixesha lokuphuma (ngemizuzwana) kunye nesenzo esenziwa emva kokuba akukho nababhali befundiwe ngexesha elinikeziweyo. Umzekelo wokuphumla usebenza kwinkqubo ekhankanywe kutshanje. Akukho xesha lokungagqibekanga. Uhlobo oluthile olukhethiweyo "lokuphuma" (elisetyenziswe ngumyalelo wokulindela ) aluchaphazeli kulo xesha lokuphumla.

Ngokomzekelo, isalathisi esilandelayo singasetyenziselwa abasebenzisi be-autologout abangayifakile nayiphi na iyure kodwa bafumana imilayezo yesistimu rhoqo:

ukusebenzisana-ukufaka i-$ user_spawn_id ukuphumla kwe-3600-ukubuya \ $ spawn_id

Ukuba iphethini ligama elingundoqo elingenanto , kwaye i- null ivumelekile (ngokusebenzisa umyalelo we- remove_nulls ), umzimba ohambelanayo uyenziwa ukuba i-ASCII enye ifanelwe. Akunakwenzeka ukufanisa i-0 bytes nge-glob okanye ipatheni ye-regexp.

Ukuqulunqa iphethini ngeflegi -kubhalwa kubangela ukuba u- interactive_out (spawn_id) athathwe kwi-spawn_id ehambelana nomfanekiso (okanye i-eof).

Izenzo ezinjengekhefu kunye nokuqhubeka nezixhobo zokulawula izizathu (oko kukuthi, ukuze , i- proc ) ziphathe ngendlela eqhelekileyo. Nangona kunjalo ubuya kubangela ukusebenzisana ukubuyela kumnxebi wakhe , ngelixa i- inter_return ibangela ukusebenzisana ukuze kubangele ukubuya kumfowni wayo. Ngokomzekelo, ukuba "i-pro foo" ebizwa ngokuba yintsebenziswano leyo leyo yenze i-action inter_return , proc foo yayiza kubuya. (Oku kuthetha ukuba ukuba unxibelelwano lwefowuni unxibelelwano lokuthayipha ngokubhaliweyo luya kubangela ukuba usebenziswano luqhubeke, ngelixa i- inter-return ibangela ukuba usebenzisane ubuyele kumnxebi wakhe.)

Ngexesha lokusebenzisana , iimodi ezikhusiweyo zisetyenziselwa ukuba bonke abalinganiswa bangadluliselwa kwinkqubo yangoku. Ukuba inkqubo yangoku ayifumananga iimpawu zokulawula umsebenzi, iya kuyeka ukuba ithumele uphawu lokumisa (ngo-default ^ Z). Ukuyiqala kwakhona, thumela i-signal yokuqhubeka (njengokuthi "bulala -CONT"). Ukuba ufuna ngokwenene ukuthumela i-SIGSTOP kwinkqubo enjalo (nge ^ Z), qwa lasela ukufaka i-csh kuqala uze usebenzise inkqubo yakho. Ngakolunye uhlangothi, ukuba ufuna ukuthumela i-SIGSTOP ukuba ilindele, uqale ubiza umntoli (mhlawumbi ngokusebenzisa umsebenzisi wokuphepha), kwaye ucinezela ^ Z.

Iibini zomzimba zomzimba zingasetyenziselwa njengendlela emfutshane yokuphepha ukuba ungene kwitokiki kwaye wenze imiyalelo phakathi. Imodi yesigxina esedlulileyo isetyenziswa ngelixa umzimba womzi womzimba womgca wenziwa.

Ngokukhawuleza, izenzo zenza kwimodi eluhlaza ngokuzenzekelayo. I- fayile yefayile ivuselela i-terminal kwisimo esayiyenayo ngaphambi kokuba kusebenzisane (ngokuqhelekileyo, imodeli ephekwe). Qaphela ukuba abalinganiswa bangena xa imimoya ishintshiweyo ingahle ilahleke (isici esibuhlungu somqhubi wesiphawuli kwezinye iinkqubo). Isizathu esisodwa sokusebenzisa- issetyenziswano kukuba isenzo sakho sincike ekusebenzeni kwimodi ephekwe.

Ifuyibhile-ye-yo ithumela abalinganiswa abafanisa iphethini elandelayo ukuya kwinkqubo eyenza ukuba impawu nganye zifundwa. Oku kunokuba luncedo xa umsebenzisi efuna ukubona impendulo evela kumaphethini atyhiniweyo.

Ukuba iphetshana likhankanywa kodwa ekugqibeleni lihluleka ukulingana, abalinganiswa bathunyelwa kwinkqubo ezalisiweyo. Ukuba inkqubo ezalisweyo iyawabamba, umsebenzisi uza kubona abalinganiswa kabini. -echo mhlawumbi ifanelekile kwiimeko apho umsebenzisi akanakwenzeka ukuba angagqibeli iphethini. Umzekelo, le ngcaciso elandelayo ivela kwi-rftp, iskripthi se-recursive-ftp, apho umsebenzisi ucelwa ukuba angene ~ ~ g, ~ p, okanye ~ l, ukuze afumane, abeke, okanye abhale uluhlu lwangoku ngokuphindaphindiweyo. Ezi zide kude nemilayezo ye-ftp evamile, ukuba umsebenzisi akanakwenzeka ukuthayipha ~ kulandelwa nayiphi na enye into, ngaphandle kwephutha, nokuba yintoni na, mhlawumbi bayayikhathalela loo nto.

udibaniselana {-echo ~ g {accesscurdirectory 1} -echo ~ l} i-entercurdirectory 0} -echo ~ p {putcurdirectory}}

I-flag ye-- nobuffer ithumela iimpawu ezihambelana nomzekelo olandelayo kwiprogram yokuphuma njengoko kubalwe abalinganiswa.

Oku kuncedo xa ufuna ukuvumela inkqubo ibuye iphethe iphethini. Ngokomzekelo, oku kulandelayo kunokusetyenziswa ukubeka iliso apho umntu udayela khona (i-modem ye-Hayes-style style). Ngamanye amaxesha "atd" ibonakala kwimiqulu yeskripthi eminye yomgca.

I-lognumber {} {ibenzisana -nobuffer -re "(. *) \ r" ibuyisela ifake i-log log "[ifomathi yewashi [imizuzwana yeeyure]: idityaniswe $ interact_out (1, intambo)"} ubenzisana -nobuffer "atd"

Ngexesha lokusebenzisana , ukusetyenziswa kwangaphambili kwelog_user kuhoywa. Ngokukodwa, ukusebenzisana kuya kuphoqelela umphumo wayo ukuba ungene (ukuthunyelwa kumgangatho oqhelekileyo) kuba kucingwa ukuba umsebenzisi akafuni ukusebenzisana ngokungekho nto.

I- bhenkethi ibangela ukuba nayiphi na iibini eziphambili zomzimba ezisetyenziswe kwisiphumo senkqubo yangoku. Oku kunokuba luncedo, umzekelo, xa usebenzisana nemikhosi ekuthumelele izinhlamvu ezingafuneki ngexesha leseshoni ye-telnet.

Ngokungagqibekanga, ukusebenzisana kulindeleke ukuba umsebenzisi abhale stdin kwaye afunde ukukhutshwa kweNkqubo yokuzimela . I-ifulethi (ngokuba "umsebenzisi") yenza ukhangelelaniso lomsebenzisi njengenkqubo echazwe ngombango wayo (omele ukuba yi-id).

Oku kuvumela iinkqubo ezimbini ezingahambelani ukuba zihlangane ngaphandle kokusebenzisa i-loop ecacileyo. Ukunceda ekuphuculeni, Lindela ukuxilonga rhoqo ukuya kwi-stderr (okanye ukuhamba kweengxelo ezithile zokungena nokulungisa ulwazi). Ngesizathu esifanayo, umyalelo weetoliki uya kufunda ngokuthe ngqo kwi-stdin.

Umzekelo, isiqendu esilandelayo senza inkqubo yokungena ngemvume. Emva koko udibanisa umsebenzisi (ungaboniswa), kwaye ekugqibeleni udibanisa ababini kunye. Kakade, nayiphi na inkqubo inokufakwa endaweni yokungena ngemvume. I-shell, umzekelo, iya kuvumela umsebenzisi ukuba asebenze ngaphandle kokunikezela i-akhawunti kunye nephasiwedi.

ungene ngemvume yokungena ngemvume yokungena ngemvume ye-spawn_id spa modem tip # ukudayela kwakhona kumsebenzisi # qhagamshela umsebenzisi ukungena ngemvume -ngena ngemvume ye-$

Ukuthumela imveliso kwiinkqubo ezininzi, dwelisa uluhlu olulodwa lwe-id ye- spawn evezwe yi- flag. Ukufakelwa kweqela leemveliso ze - ID ezifowunayo zingagqitywa ngoluhlu lwe-id ephulukileyo olufakwe yi- flag flag. (Zombini -i-intetho kunye -kukhupha kungathatha uluhlu kwifom efana ne -iyiflegi kumyalelo wokulindela, ngaphandle kokuba nayiphi na_spawn_id ayinakulinganiswa ekusebenzisaneni .) Zonke iiflegi ezilandelayo kunye namacandelo (okanye iipateni) ziyasebenza kule galelo kuze kube yinto enye - ifayile ifakwe. Ukuba akukho- ifayile ibonakala, -kukhupha kuchaza "-kufaka $ $ user_spawn_id -output". (Ngokufanayo, kunye neepatheni ezingenazo- zifake .) Ukuba enye- ifayile icacisiwe, iphezulu i-user_spawn_id. Ukuba ifayile yesibini ichaziwe, iphezulu i-spawn_id. Olongezelelweyo- iifayile zefayile zingachazwa.

Ezi zimbini zibonisa iinkqubo zengeniso ezingagqibekanga ukuba zibe neziphumo ezichazwe njenge-spawn_id kunye ne-dollar user_spawn_id (ngokuchasene). Ukuba i- flag yefayile ivela ngaphandle kwefayile , iifayile ezivela kule nkqubo zilahla.

I-iiflethi ibonisa ukutshintshwa kwe-spawn_id yangoku xa kungekho nanye- ifayile okanye iifowuni zokukhupha zisetyenziswa. I-iiflegi ibonisa i-flag.

Kunokwenzeka ukuba utshintshe iinkqubo ezidibeneyo kunye nokusebenzisa i-ids engabonakaliyo. (Ii-ids ezingabonakaliyo ze-ids zichazwe kwicandelo ngomyalelo wokulindela.) I-ids engabonakaliyo ye-spawns ingacaciswa kunye -i, -u, -iyi-input, okanye -i-flags.

itoliki [args]
ibangela ukuba umsebenzisi asebenzisane ngokukhawuleza ukuba alindele kunye ne-Tcl. Isiphumo somyalelo ngamnye siyaprintwa.

Izenzo ezinjengekhefu kunye nokuqhubeka nezixhobo zokulawula izizathu (oko kukuthi, ukuze , i- proc ) ziphathe ngendlela eqhelekileyo. Nangona kubuya kubangela ukuba uguquleli abuyele kumnxebi wakhe , ngelixa i- inter_return ibangela isichazili ukuba kubangele ukubuya kumfowni wayo. Ngokomzekelo, ukuba "i-pro foo" ebizwa ngokuba ngutoliki oye wenza isenzo se- inter_return , i- proc foo yayiza kubuya. Nawuphi na omnye umyalelo ubangela isichazi ukuqhubela phambili ukuhambisa imiyalelo emitsha.

Ngokungagqibekanga, i-prompt iqulethe i-integers ezimbini. I-integer yokuqala ichaza ubunzulu bomgca wokuvavanya (okt, kanani kangangoko iTcl_Eval ibizelwe). Inombolo yesibini yiyona nkcukacha yomlando weTcl. I-prompt ingasetwa ngokucacisa inkqubo ebizwa ngokuthi "prompt1" leyo ixabiso layo lokubuyela liba lixesha elizayo. Ukuba inkcazo ivule iicatshulwa, ii-parens, braces, okanye iibakaki, ngokukhawuleza kwangoko (ngokuzenzekelayo "+>") kukhutshwa kwi-newline. Isibambiso sesibini singasetwa ngokucacisa inkqubo ebizwa ngokuthi "prompt2".

Ngexesha lotoliki , ifowuni ephekwe isetyenzisiweyo, nokuba ngaba umnxebi wayesebenzisa imimoya eluhlaza.

Ukuba i-stdin ivaliwe, utoliki uya kubuya ngaphandle kokuba kusetyenziswe iiflegi, kwimeko apho ingxabano esilandelayo ifunyenwe.

log_file [args] [[-a] ifayile]
Ukuba igama lefayile libonelelwa, i- log_file iya kubhala isicatshulwa kwiseseshoni (ukuqala kuloo ngongoma) kwifayile. I-log_file izakuyeka ukurekhoda ukuba akukho ngxabano enikwa. Nayiphi na ifayile yelog yangaphambili ivalwe.

Esikhundleni segama lomnxeba, isihlomelo sefayile ye-Tcl sinokunikezwa ngokusebenzisa i- oropen okanye i- flaop flags. Oku kufana nomyalelo ophulukileyo . (Jonga ukufumana ulwazi olungakumbi.)

I-ifulegi ibangela umbane ukuba ungene ngemvume okhutshwe ngumyalelo we- log_user .

Ngokungagqibekanga, umyalelo we- log_fayile usetyenziswe kwiifayile ezidala kunokuba uzibekele, ukuze kube lula ukuba ungene ngemvume kwaye ngezihlandlo ezininzi kwiseshoni enye. Ukucwangcisa iifayile, sebenzisa -ngaphantsi kweflegi.

I- flag yeflegi ibangela i-log_file ukuba ibuyisele inkcazo yezona zinto zichazwe kungekudala.

log_user -info | 0 | 1
Ngokungagqibekanga, intetho yokuthumela / yokulindela ingenwe kwi-stdout (kunye nefayile ifayile evulekileyo). Ukungena kwi-stdout kukhutshaziwe ngumyalelo othi "log_user 0" kwaye uvuselelwe "log_user 1". Ukungena kwifayile yegama kungatshintshi.

I- flag yefayile ibangela log_user ukubuyisela inkcazo yezona zinto zingezangezona zengxelo ezingenayo ulwazi.

umdlalo_max [-d] [-i spawn_id] [ubungakanani]
ichaza ubukhulu be-buffer (kwi-bytes) ezisetyenziswe ngaphakathi ngaphakathi. Ngaphandle kwengxabano yobukhulu , ubukhulu obukhoyo buyabuyiselwa.

Nge- idirethi , ubukhulu obungaguqukiyo bubekwe. (I-default default ye-2000.) Nge-iiflegi, ubukhulu bubekwe i-id eyaziwayo, mhlawumbi isetyenziselwa inkqubo yangoku.

ukugqithisa [- # spawn_id] [- # spawn_id] [...] inkqubo [args]
iqhuba "inkqubo ye- args" endaweni yeli xesha elindelekeyo , eliphelisa. Ingqungquthela engqinelaniyo ibangela ingcambu phambi kwegama lomyalelo njengokungathi igobolondo yokungena. Zonke i-spa_ids zivaliwe ngaphandle kwalabo ababizwa ngokuba yiingxabano. Ezi zimephu kwiimpawu ezikhethiweyo zeefayile.

I-Spawn_ids ifakwe kwiifayile zokufaka iifowuni zeprogram entsha yokulidla. Umzekelo, umgca olandelayo uqhuba i-chess kwaye uvumele ukuba ulawulwe yinkqubo ekhoyo-yithi, inkosi ye-chess.

i-$0 spawn_id -1 $ spawn_id -2 $ spawn_id chess

Oku kusebenza ngokugqithiseleyo kunokuba "usebenze -u", nangona kunjalo, lidela ukukwazi ukwenza ukusebenzisana okucwangcisiweyo njengoko ikulindeleke inkqubo ayisekho ekulawuleni.

Qaphela ukuba akukho sigxina sokulawula esinikezelwayo. Ngaloo ndlela, ukuba unqanyula okanye ulungise ukufakelwa okuqhelekileyo, iinkqubo ezenza umsebenzi wokulawula umsebenzi (iigobols, ukungena ngemvume, njl.) Aziyi kusebenza ngokufanelekileyo.

ubunye [-d] [-i spawn_id] [xabiso]
ichaza ukuba i-parity kufuneka igcinwe okanye ikhutshwe kwimveliso yeenkqubo ezizalwe. Ukuba ixabiso liyilo, ubuhlanga buhlanjululwe, ngaphandle koko ayihlanjulwanga. Ngaphandle kwengxabano yexabiso , ixabiso langoku libuyiselwa.

Nge- idirethi , ixabiso lokungafaniyo lihlelwe . (Okokusilela kokuqala ngowoku-1, oko kukuthi, ubuhlanga abuyihlanjululwa.) Nge-iiflegi, ixabiso lentengo libhekiselwe igama elibizwa ngokuba yi-spa, mhlawumbi isetyenziselwa inkqubo yangoku.

Susa_nulls [-d] [-i spawn_id] [xabiso]
ichaza ukuba i-nulls igcinwe okanye isuswe kwimveliso yeenkqubo ezizalwe ngaphambi kokuba ifanethi ifanelwe okanye igcinwe kwi-variable ikulindela_kuye okanye u- interactive_out . Ukuba ixabiso li-1, i-nulls isusiwe. Ukuba ixabiso li-0, i-nulls ayisuswanga. Ngaphandle kwengxabano yexabiso , ixabiso langoku libuyiselwa.

Nge- idiregi , ixabiso elitshintshiweyo lisetyenziswe. (Okokusilela kokuqala kuku-1, oko kukuthi, i-nulls isuswe.) Nge-iiflegi, ixabiso libekwe i-id eyaziwayo, mhlawumbi isetyenziselwa inkqubo yangoku.

Ingaba okanye ayinakususwa, Hlalani ukurekhoda ii-bytes ezingenanto kwi-log kunye ne-stdout.

thumela umtya [-flags]
Ithumela intambo kwenkqubo yangoku. Umzekelo, umyalelo

thumela "ihlabathi lonwabo \ r"

thumela abalinganiswa, baxhamle kwinkqubo yangoku. (I-Tcl iquka umyalelo we- printf- onjenge- fom (ebizwa ngokuba yifomathi ) engayakha imicu engqongqo.)

Iimpawu zithunyelwa ngokukhawuleza nangona iiprogram ezinezixhobo ezixilisiweyo zingayi kufunda abalinganiswa de kube udidi lokubuyela luhanjiswe. Uhlobo lokubuyela luchazwe "\ r".

I-flag igqugquzela ingxabano elandelayo ukutolika njengomtya ngaphandle kweflegi. Naluphi na umtya oya kulandelwa ngu- "-" nokuba mhlawumbi ibukeka njengeflegi. Oku kunika indlela ethembekileyo yokucacisa iintambo ezingaguqukanga ngaphandle kokuhlanjululwa yilezo zibukeka njengeziflegi ngengozi. (Zonke iintambo eziqala ngo-"-" zigcinwe ukhetho oluzayo.)

I-ifulegi ichaza ukuba umtya uhanjiswe kwi-spawn_id egama lingu-spawn. Ukuba i-spawn_id ngumsebenzisi_spawn_id , kwaye i-terminal isekhomo eluhlaza, iifowuni zintambo ziguqulelwe ukubuyisela-ukulandelelana kwe-newline ukwenzela ukuba zivele ngathi i-terminal inendlela ephekiweyo. I- brawuza ikhubaza le nguqulelo.

I-iiflegi ithumela abalinganiswa abangenanto (0 bytes). Ngokungagqibekanga, enye i-null iyathunyelwa. Inombolo ingayilandela -- unqakraza ukubonisa ukuba zingaphi i-nulls zokuthumela.

I- faki yebreak ivelisa imeko yokuphuka. Oku kunengqiqo ukuba i-id engabonakali ibhekisele kwisicatshulwa se-tty evuliwe "nge-spawn -open". Ukuba uvelise inkqubo efana nephusti, kufuneka usebenzise inkontileka yomxholo wokudala ukuphuka.

I - iflegi ibangela ukuba kuthunyelwe "ngokukhawuleza", ngoko uphephe imeko eqhelekileyo apho ikhompyutha ikhuphe ngaphandle kwesikhombisi sokufakelwa kwenzelwe umntu ongeke akhuphe enye into. Le ntlawulo ilawulwa yixabiso leyintlukwano "thumela_ngezantsi" ezithatha uluhlu lwezinto ezimbini. Inqaku lokuqala liyinani elichaza inani leettes ukuba lithumele i-atom. Inxalenye yesibini yinyani lenene echaza inani lemizuzwana apho ukuthunyelwa kwe-athomu kufuneka kuhlukaniswe. Ngokomzekelo, "setha uthumele_ngezansi {10 .001}" uza kukhangela "thumela -s" ukuthumela ii-strings kunye ne-1 millisecond phakathi kolunye uhlamvu olu-10 oluthunyelwe.

I -h ibhentshi ibangela ukuba kuthunyelwe (mhlawumbi) njengomntu ochwepathileyo. Ukulibaziseka okufana nabantu kubonakala phakathi koobuntu. (I-algorithm isekelwe ekuhanjisweni kwe-Weibull, kunye nokuguqulwa ukuhambelana nesicelo esithile.) Esi siphelo silawulwa lixabiso leguquguqukileyo "thumela_nabantu" elithatha uluhlu lwezinto ezintlanu. Iimpawu ezimbini zokuqala zixesha eliphakathi lokulinganisa labalinganiswa ngemizuzwana. Iyokuqala isetyenziswe ngokusilelayo. Iyesibini isetyenziswe ekupheleni kwegama, ukufanisa iiphambuka ezifihlakeleyo ezenzeka ngezihlandlo ezinjalo. Ipharamitha yesithathu imilinganiselo yokuhlukahluka apho .1 iyahlukahluka, 1 iyatshintsha ngokufanelekileyo, kwaye i-10 ayinakwenzeka. Ukugqitha kuku-0 ukuya ngaphantsi. Ii-parameters zokugqibela ezimbini, ngokulandelanayo, ixesha elincinci kunye nelona xesha liphakathi. Ubuncinci kwaye buninzi basetyenziselwa ukugqibela kunye ne "clip" ngexesha lokugqibela. Umyinge ophezulu unokuhluke kakhulu kumlinganiselo owenziwe ukuba ubuncinci kunye neqondo eliphezulu lixabiso elaneleyo.

Ngokomzekelo, umyalelo olandelayo uququzelela umzekelo wokuzimela nokuzimela:

setha uthumele_humanuntu {.1 .3 1 .05 2} thumela -h "Ndilambile. Masenze isidlo sasemini."

ngelixa ezi zilandelayo zingase zilungele ngakumbi emva kwesango:

setha uthumele_humanuntu {.4 .4 .2 .5 .5 100} thumela -h "Ubusuku obuhle bombutho!"

Qaphela ukuba iimpazamo azange zenziwe, nangona ungasetha izilungiso zokulungiswa kwephutha ngokwakho ngokufakela iimpazamo kunye nezilungiso kwisigqibo sokuthumela.

Iiflegi zokuthumela iimpawu ezingenanto, ngokuthumela ikhefu, ukwenzela ukunyanzelisa umgangatho osisiseko kwaye ukuveliswa kwesitayela somntu kuhlangeneyo. Kuphela okuchaziweyo okugqibela kuya kusetyenziswa. Ngaphezu koko, akukho mbambano yechungechunge ingacaciswa kunye neeflegi zokuthumela iimboli ezingenanto okanye ikhefu.

Yilungileyo elilungileyo ukuhamba phambili kokuqala ukuthumela kwinkqubo ngokulindela. kulindeleke ukuba ulindele ukuba inkqubo iqale, ngelixa ukuthumela akukwazi. Ngokukodwa, ukuba ukuthunyelwa kokuqala kugqityiwe ngaphambi kokuba inkqubo iqalise ukusebenza, ubeka umngcipheko wokuba udibanise idatha yakho. Kwiimeko apho iinkqubo ezibandakanyekayo zinganikeli ngokukhawuleza kokuqala, ungathumela ukuthumela ngokulibaziseka njengoko:

# Ukuze ugweme ukunika abahlaseli bacebisa indlela yokuwaphula ngayo, # le nkqubo ayifuni iphasiwedi yangaphandle. # Lindela imizuzwana emihlanu ukuba ufeze ukuzalisa i-telnet kakhulu.secure.gov yokulala 5 uthumela igama lephasiwedi

exp_send i-alias yokuthumela. Ukuba usebenzisa i-Expectk okanye enye into eyahlukileyo yokulindela kwimo yendalo ye-Tk, thumela ichazwa nguTk ngenjongo ehlukileyo ngokupheleleyo. exp_send inikezelwa ukuhambelana phakathi kweemeko. Amashishini afanayo anikezelwa kwezinye iilindelo zokuthumela ezinye.

thumela i -_error [-flags] ngentambo
kufana nokuthumela , ngaphandle kokuba umkhiqizo uthunyelwa kwi-stderr kunokuba kuqhubeke inkqubo .

thumela_log [-] umtya
kufana nokuthumela , ngaphandle kokuba umtya uthumela kuphela kwifayili yelog (bona i- log_file .) Iingxabano zithatyathwa ukuba akukho fayile yelogi evulekile.

thumela_tty [-flags] ngentambo
kufana nokuthumela , ngaphandle kokuba umkhiqizo uthunyelwe kwi / dev / tty kunokuba kuqhubeke inkqubo .

thumela i-string--flags] ngentambo
kufana nokuthumela , ngaphandle kokuba umkhiqizo uthunyelwa kwi-stdout kunokuba kuqhubeke inkqubo .

ukulala imizuzwana
ibangela ukuba iskripthi silale ngenxa yenani elinikeziweyo lemizuzwana. Iibini zingaba yinombolo yokugqibela. Ukuphazamiseka (kunye neemeko zeTk ukuba usebenzisa i-Expectedk) zicutshungulwa ngelixa zilindele ukulala.

I-program ye-args] [args]
kudala inkqubo entsha eqhuba "inkqubo ye- args". I-stdin yayo, i-stdout kunye ne-stderr zidibaniswe ukulindela, ukuze zifundwe zibhaliswe ngamanye Ukulinda imiyalelo. Unxibelelwano luphulwe ngokuvaliweyo okanye ukuba inkqubo ngokwayo ivale nayiphi na iifowuni zeefayile.

Xa inkqubo iqaliswa yi- spawn , i- spawn_id eguqukileyo isetyenziswe kwi-descriptor ebhekiselele kule nkqubo . Inkqubo echazwe ngu- spawn_id ithathwa ngokuba " inkqubo yangoku ". spawnid ingafundwa okanye ibhaliwe, empeleni ihlinzeke ukulawula umsebenzi.

umsebenzisi_spawn_id yi-variable variable yehlabathi equkethe inkcazelo ebhekisela kumsebenzisi. Ngokomzekelo, xa spawn_id isetyenziswe kule xabiso, lindela ukuziphatha njengokulindele_kucinga.

I- error_spawn_id yintlukwano yehlabathi equkethe inkcazelo ebhekiselele kwimpazamo eqhelekileyo. Umzekelo, xa spawn_id isethelwe kule xabiso, thumela ziziphatha njenge- send_error .

tty_spawn_id yintlobo eguquguqukayo yehlabathi equkethe inkcazelo ebhekisela kwi / dev / tty. Ukuba / dev / tty ayikho (njenge-cron, kwi-or, okanye i-batch script), ke i- tty_spawn_id ayichazwanga. Oku kungahlolwa njenge:

ukuba {[info vars tty_spawn_id]} {# / dev / tty ikhona} enye {# / dev / tty ayikho # mhlawumbi kwi-cron, batch, okanye kwisikripthi}

ukuhluma kubuyisela i-UN inkqubo yenkqubo . Ukuba akukho nqubo izaliswa, i-0 ibuyiselwe. I-variable- spawn_out (inceku, igama) isetyenziswe kwigama lesicaka sekhoboka.

Ngokungagqibekanga, i- spawn iqhosha igama lomyalelo kunye neengxabano. I-- noecho iflegi iyayeka ukukwenza oku.

I- fowuni yefowuni ibangela ukukhutshwa kwe console ukuze kuhanjiswe kwinkqubo eyenziwe . Oku akuxhaswanga kuzo zonke iinkqubo.

Ngaphakathi, utywala usebenzisa i-pty, uqaliswe ngendlela efanayo nomsebenzisi. Oku kuqhutyelwa phambili ukuze zonke izicwangciso "zixhamle" (ngokwempawu (1)). Ukuba i- stty_init eguqukileyo ichazwa, ityhilwa kwisitayela seengqungquthela zamagama njengendlela yokucwangcisa ngaphezulu. Ngokomzekelo, "setha stty_init eluhlaza" kuza kubangela ukuba ezinye iiprogram zokuzalisa ziqaliswe kwimodi eluhlaza. -nottycopy yeqa ukuqaliswa ngokusekelwe kwi-tty yomsebenzisi. -nottyinit weqa u "sane" ukuqaliswa.

Ngokuqhelekileyo, ukuhluthwa kuthatha ixesha elingaphambili lokuphumeza. Ukuba uqaphela ukuhluma kuthatha ixesha elibalulekileyo, mhlawumbi udibana ne-ptys edibeneyo. Uninzi lweemvavanyo luqhutywa kwi-ptys ukuphepha ukungena kwiinkqubo eziphosakeleyo. (Ezi zithatha imizuzwana engu-10 nganye nge-pty wedged wed.) Running Expect with -d option will show if Expected is encountered multiple ptys in state odd. Ukuba awukwazi ukubulala iinkqubo apho ezi zinto zifakwe kuyo, ukufumana kwakho kuphela kunokuba kuqalise kwakhona.

Ukuba inkqubo ayikwazi ukuzaliswa ngempumelelo kuba i-exec (2) ihluleka (umzekelo xa iprogram ingekho), umyalezo wephutha uya kubuyiselwa ngolu hlobo olulandelayo okanye ulindele umyalelo njengoko iprogram isebenze kwaye ivelise umyalezo wephutha njengesiphumo. Oku kuziphatha ngumphumo wendalo wokuphunyezwa kwe- spawn . Ngaphakathi, fakela ifoloksi, emva koko inqubo engenayo ayinayo indlela yokunxibelelana neyokuqala Yilindele inkqubo ngaphandle koqhagamshelwano nge-spawn_id.

I-flag evulekileyo ibangela ukuba ingxabano elandelayo iguqulelwe njengesihlonzi sefayile yeTcl (oko kukuthi, kubuyiselwe ngokuvulekileyo .) I-ID engasetyenziswayo ingasetyenziselwa ukuba ifakwe kwinkqubo . (Ifayile yefayile ayifanele isetyenziswe.) Oku kukuvumela ukuba uphathe amacebo afakiweyo, iifayile kunye neepayipi njengoko zenziwe ngeenkqubo ngaphandle kokusebenzisa i-pty. 0 ibuyiselwa ukubonisa ukuba akukho nxulumene nenkqubo . Xa uqhagamshelo kwinkqubo ekhutshweyo ivalwe, kunjalo ke isihlonzi sefayile yeTcl. Iiflegi -leaveopen ifana ne-- open ngaphandle kokuba -leaveopen ibangela ukuba isihlomelo sefayile sishiywe sivulekile nangemva kokuba i-id yefayili ivaliwe.

Ifulegi engenanto ibangela ukuba i-pty ivule kodwa akukho nkqubo eyenziwa. 0 ibuyiselwa ukubonisa ukuba akukho nxulumene nenkqubo . I-Spawn_id isetyenziswe njengesiqhelo.

I-variable- spawn_out (inceku, fd) isetyenziswe kwisihlomelo sefayile esifana nekhoboka le-pty. Ingavalwa ngokusebenzisa "i-close-slave".

Ifulegi ye-- ignore ibonisa uphawu olungayihoywa kwinkqubo eyenziwe . Ngaphandle koko, izibonakaliso zenza ukuziphatha okuzenzakalelayo. Izibonakaliso zibizwa ngokuba ngumyalelo womgibe , ngaphandle kokuba isignali nganye idinga ifulegi ehlukileyo.

nqanaba lomxube
izizathu ezilandelayo zichazwe phambi kokuba zenziwe. (I-Tcl's trace command traces variables.) Inqanaba libonisa ukuba kude kangakanani kwi-stack call. Umzekelo, le miyalelo ilandelayo ikulindeleke ngelixa ulandela amanqanaba amane okuqala, kodwa akukho ngaphantsi kwelo.

lindela -c "i-strace 4" script.exp

I- flag yeflegi ibangele ukuhlaziywa ukubuyisela inkcazo yezona zinto zingezangezona zengxelo ezingenayo ulwazi.

stty args
utshintshe iimodi zokugcina ezifanayo nomyalelo wangaphandle we-stty.

Ngokungagqibekanga, isigxina sokulawula sifumaneka. Amanye ama-terminals angafumaneka ngo-appending "Izicelo zesimo zibuyiselwa njengemiphumo yomyalelo. Ukuba akukho ndawo ifunyenwe kwaye isigqeba esilawulayo sifinyeleleke, isimo sangaphambili sesibonakaliso esiluhlaza kunye ne-echo sibuyiselwa kwifom engasemva tyenziswa ngumyalelo.

Ngokomzekelo, iingxabano eziqhekezayo okanye eziphephekileyo zibeka i-terminal ibe yimodi eluhlaza. Iingxabano-okanye ziphekwe zibeke i-terminal ibe yindlela yokupheka. Iingxoxo zivakalisa kunye -echo zibeke i-terminal ibe yi-echo kunye ne mode noecho ngokulandelanayo.

Umzekelo olandelayo ubonisa indlela yokukhubaza okwesikhashana ukukhawuleza. Oku kungasetyenziswa kwezinye iincwadi zeempendulo ngokuzenzekelayo ukuphepha ukungena kwiiphasiwedi kuzo. (Jonga ingxoxo engaphezulu kule PHEPHA NGEZIFUNDO ezingezantsi.)

stty -echo uthumela_user "Iphasiwedi:" lindela_user -re "(. *) \ n" usethe iphasiwedi $ ukulinda_out (1, string) stty echo

system args
unikeza i- args ukuya sh (1) njengegalelo, ngokungathi zifakwe njengomyalelo ovela kwi-terminal. Lindela ukulinda de igobolondo iphele. Isimo sokubuyisa esikolweni siphethwe ngendlela efana neyolawulo elilawulayo.

Ngokwahlukileyo ekusebenzeni okubuyisela i- stdin kunye ne-stdout kwisikripthi, inkqubo ayiyi kukhwela kwakhona (ngaphandle kokuboniswa ngumtya ngokwawo). Ngaloo ndlela, kunokwenzeka ukusebenzisa iinkqubo ezimele zithethe ngqo / dev / tty. Ngesizathu esifanayo, iziphumo zenkqubo azibhalwanga kwilogi.

itampamp [args]
ubuyisela itampampamp. Ngaphandle kweengxoxo, inani lamasekhondi ukusuka kwithuba elibuyisiweyo.

I-- fayile yeflegi ifaka umtya obuyiswayo kodwa ngokufaka endaweni eyenziwe ngokwemiqathango ye-POSIX ye-strftime. Umzekelo% ishintshwe ngegama elifingqiweyo lweveki yeveki (oko kukuthi, iSat). Abanye ba:

% igama elikhethiweyo leveki yeveki% Igama elipheleleyo leveki elipheleleyo% b igama eligqityiweyo lenyanga% B Igama elipheleleyo leenyanga ngenyanga% c ngo-Wed Ok 6 11:45:56 1993% d ngosuku lwenyanga (01-31% yeeyure (00-23)% Ixesha (01-12)% j umhla (001-366)% inyanga inyanga (01-12)% M ngomzuzu (00-59)% p okanye i-pm% S yesibini (00-61) % usuku (1-7, ngoMvulo usuku lokuqala lweveki)% Iveki (00-53, ngeCawa yokuqala ngowusuku lokuqala lweveki enye)% V iveki (01-53, isitayela se-ISO 8601)% w ngosuku (0- 6)% Iveki (00-53, ngoMsombuluko wokuqala ngumhla wokuqala weveki enye)% x ixesha-suku njengangoku: Ngomhla ka-Oktobha 6 1993% X ixesha ngexesha: 23:59:59% yonyaka (00-99) % Y unyaka njengoko: ngo-1993% Z ixesha lexesha (okanye akukho nto ukuba ayinakunqunywa) %% isisigxina esibhalisiweyo sepesenti

Ezinye iinkcukacha ze-% azichaziwe. Abanye abalinganiswa baya kudlula ngokungafunyanwanga. Uhlobo lweC kuphela luxhaswa.

I- intshukumo yeflegi ifaka inani leemigqa ukususela kwithuba eliza kusetyenziswa njengendawo evela kuyo ukufomatha. Ngaphandle koko, ixesha elikhoyo lisetyenziswa.

I- gmt ifulegi ibangela umkhiqizo wexesha lesitampu ukusebenzisa i- GMT timezone. Ngaphandle kweflegi, ixesha lendawo lisebenzisa.

[umyalelo] umqondiso]
kubangela ukuba umyalelo owenziwe ukuba uphunyezwe kwixesha elizayo lokufumana nayiphi na imiqondiso enikwe. Umyalelo wenziwa kummandla wehlabathi. Ukuba umyalelo awukho, isenzo somqondiso sibuyiselwa. Ukuba umyalelo ngumtya we-SIG_IGN, iimpawu zinganakwa. Ukuba umyalelo ngumtya we-SIG_DFL, iimpawu ziphumela kwinkqubo engagqibekanga. iimpawu ziba ngumqondiso omnye okanye uluhlu lwempawu. Iimpawu zingachazwa ngenani okanye zifane ngokomqondiso njengempawu (3). Isiqalo se "SIG" singashiywa.

Ngaphandle kweengxabano (okanye ingxabano-inomboro), umgibe ubuyisela inombolo yesalathisi yomyalelo wegibe okwenziwa ngoku.

Ifulegi ye--code isebenzisa ikhowudi yokubuyisela yomyalelo endaweni yayo nayiphi na ikhowudi ye-Tcl yayiza kubuya xa umyalelo ekuqaleni uqala ukusebenza.

I- flag ye- flag yenza ukuba umyalelo uvavanywe usebenzisa isichazi esebenzayo ngexesha umyalelo uqale ukusebenza ngaphandle kokuba umgibe uvakaliswe.

I-- fayile yegama idala umyalelo wokubamba umgibe ukubuyisela igama lomqondiso lomyalelo wegibe okwenziwa ngoku.

I-flegi ye- fayile ibangela ukuba umyalelo wegibe ubuyisele inombolo enkulu yesignali engasetwa .

Ngokomzekelo, umyalelo "umgibe {uthumela_user" Ouch! "} I-SIGINT" iya kuprinta "Ouch!" ngalinye ixesha umsebenzisi ucindezela ^ C.

Ngokungagqibekanga, i-SIGINT (enokuthi ivelwe ngokucindezela ^ C) kunye neSIGTERM kubangelwa ukuba ulindele ukuphuma. Oku kubangelwa kulo mgibe olulandelayo, owenziwe ngokusilelayo xa ikulindele iqala.

ukuphuma kwesicupho {SIGINT SIGTERM}

Ukuba usebenzisa i-flag yeD-dala ukuqala i-debugger, i-SIGINT iphinda ihlaziywe ukuqalisa i-debugger esebenzayo. Oku kubangelwa ngumgibe olandelayo:

umgibe {exp_debug 1} SIGINT

Umxube we-debugger unokutshintshwa ngokuseta imo engumlinganiselo we-EXPECT_DEBUG_INIT kumyalelo omtsha wokugibela.

Unako, ngaphezu koko, ukugqitha ezimbini zombini nje ngokufaka imiyalelo yomgibe kwiskripthi sakho. Ngokukodwa, ukuba unayo "umsila wokuphuma u-SIGINT", oku kuya kunqumla umgibe we-debugger. Oku kuncedo ukuba ufuna ukukhusela abasebenzisi ukuba bangene kwi-debugger nonke.

Ukuba ufuna ukuchaza umgibe wakho kwi-SIGINT kodwa ugibe kwi-debugger xa isebenza, sebenzisa:

ukuba {! [exp_debug]} {ugibe i-SIGINT}

Ngaphandle koko, unomgibe kwi-debugger usebenzisa esinye isignali.

umgibe awuyi kukuvumela ukuba unqabe isenzo kwi-SIGALRM njengoko oku kusetyenziswa ngaphakathi ngaphakathi kulindeleke . Iinqununu zomyalelo wokunqamula i-SIGALRM ukuya kwi-SIG_IGN (inganaki). Unokuyibuyisela le nto ngokude ukhubaza ngexesha lemithetho elandelayo.

Bona uphawu (3) ngolwazi olungakumbi.

ulinde [args]
ukulibaziseka kude kube yinkqubo eyenziwe (okanye inkqubo yangoku ukuba akukho mntu ubizwa ngokuba ngumntu) iphela.

ukulinda ngokuqhelekileyo ubuyisela uluhlu lweenombolo ezine. Inombolo yokuqala iyona pid yenkqubo ekulindelwe. I-integer yesibini yinto ehambelana ne-spawn id. Inombolo yesithathu yi--1 xa kwenzeka iphutha lenkqubo yokusebenza okanye 0 ngaphandle koko. Ukuba inani lesithathu lilingu-0, inamba yesine yimo ebuyiswe yinkqubo ezalisiweyo. Ukuba inani lesithathu li--1, inani lesine lixabiso le-errno elisetyenziswe kwinkqubo yokusebenza. Iphutha lokuguquguquka kwehlabathi jikeleleCode isetyenziswe kwakhona.

Izinto ezongezelelweyo zingabonakala ekupheleni kwexabiso lokubuya ukusuka kulinde . Into ekhethiweyo yesihlanu ibonisa iklasi yolwazi. Okwangoku, ixabiso eliphela kuphela le nxalenye liyi-CHILDKILLED apho imeko elandelayo ixabiso elilandelayo ligama lesigxina se-C kunye nenkcazo emfutshane yombhalo.

I-iiflethi ichaza inkqubo yokulinda ehambelana ne-spawn_id egama lingu (AKUNYE i-id inkqubo ). Ngaphakathi kumphathi we-SIGCHLD, kunokwenzeka ukuba ulinde nayiphi na inkqubo eyenziwe ngokusebenzisa i-idwn-id -1.

I-- nowait ifulegi yenza ukuba ukulinda kubuyele ngokukhawuleza kunye nokubonakaliswa kokulinda ngempumelelo. Xa inkqubo iphuma (kamva), iya kutshatyalaliswa ngokuzenzekelayo ngaphandle kwemfuneko yokulinda ngokucacileyo.

Umyalelo wokulinda ungasetyenziselwa ukulinda inqubo enqambileyo usebenzisa iziphakamiso "-i -1". Ngokungafani nokusetyenziswa kwayo kunye neenkqubo ezizaliswayo, lo myalelo unokwenziwa naliphi na ixesha. Akukho mandla ekulawuleni inkqubo . Nangona kunjalo, ixabiso lokubuyiselwa lizakukhangela i-id yenkqubo .

IINKCUKACHA

Lindela ngokuzenzekelayo uyazi malunga namathala eencwadi ezakhelwe ezimbini zokulindela izikripthi. Ezi zichazwe ngabalawuli abachazwe kwii-variables exp_library kunye ne-exp_exec_library. Zomibini zenzelwe ukuba ziqulethe iifayile ezisetyenziswayo ezingasetyenziswa ngamanye amaempendulo.

exp_library iqulethe iifayile ezizimeleyo. exp_exec_library iqulethe iifayile ezixhomekeke kwi-architecture. Ngokuxhomekeke kwinkqubo yakho, zombini iirejista zingenanto engenanto. Ubukho befayili i-exp_exec_library / i-cat-buffers ichaza ukuba ngaba i-your / bin / cat buffers ayifumanekanga.

UKUPHILA

Incazelo yevgrind ifumaneka kwi-pretty-printing Jonga izikripthi. Ukucinga ukuba ingcaciso egciniweyo enikezelwe nguLindelwe ukusabalalisa ifakwe ngokufanelekileyo, ungayisebenzisa njenge:

ifayile ye-vgrind -lexpect

I MI ZEKELO

Ininzi ayibonakali indlela yokubeka izinto ndawonye kunye nephepha lomntu elichazayo. Ndiyakhuthaza ukuba ufunde kwaye uzame imizekelo kwirejista yomzekelo wokulindela ukusabalalisa. Ezinye zazo ziyinkqubo yangempela. Ezinye zifanekisela iindlela ezithile, kwaye ke, isibini sibini sihamba ngokukhawuleza. INDLELA yokufakela ifumaneka ngokukhawuleza kwezi nkqubo.

Ukulindela amaphepha (jonga QAPHELA) nako luncedo. Nangona amanye amaphepha asebenzisa i-syntax ehambelanayo neenguqulelo zangaphambili zokulindela, i-rationales ehambisanayo isasebenza kwaye ingena kwiinkcukacha ezininzi kunalolu phepha lomntu.

IIMVAVANYO

Izandiso zingabhoxisa ngamagama omyalelo wokulindela. Umzekelo, thumela ichazwa nguTk ngenjongo ehluke ngokupheleleyo. Ngenxa yesi sizathu, uninzi lwezilindelo ziyafumaneka kwakhona njenge "exp_XXXX". Imiyalelo kunye neziguquko eziqala "exp", "inter", "spawn", kunye "nokuphumla" abanalo izivumelwano. Sebenzisa amagama omyalelo owandisiweyo xa ufuna le nxu lumano phakathi kweemeko.

Ukulindela kuthatha umbono okhululekileyo wokujonga. Ngokukodwa, iinguqu ezifundwa ngemithetho ethile yokulindela Inkqubo iya kufuna kuqala ukusuka kwindawo yangaphakathi, kwaye ukuba ingafunyanwanga, kwinqanaba lehlabathi. Ngokomzekelo, oku kuphazamisa isidingo sokubeka "ukuphumla kwehlabathi" kuyo yonke inkqubo obhalayo esebenzisa ukulindela . Ngakolunye uhlangothi, iziganeko ezibhaliweyo zihlala zihlala kwindawo yangaphandle (ngaphandle kokuba umyalelo "wehlabathi" ukhutshwe). Ingxaki eqhelekileyo le nto ibangelwa xa kuzaliswa i-spawn kwinkqubo. Ngaphandle kwenkqubo, spawn_id ayisekho, ngoko inkqubo yokuzaliswa ayifumanekanga kuphela ngenxa yokukhangela. Yongeza "i-spawn_id emhlabeni jikelele" kwinkqubo enjalo.

Ukuba awukwazi ukunika amandla ukuxhamla i-multispawning (oko kukuthi, inkqubo yakho ayixhasekanga (BSD *. *), I-poll (SVR> 2), akukho nto ilinganayo), Lindela iyakwazi kuphela ukulawula inkqubo enye ngexesha. Kule meko, ungazami ukumisa i- spawning , kwaye akufanele usebenze iinkqubo nge-exec executing process . Ukongezelela, awuyi kukwazi ukulindela kwiinkqubo ezininzi (kubandakanywa nomsebenzisi omnye) ngexesha elinye.

Iiparameters zekota ziba nefuthe elikhulu kwiempendulo. Umzekelo, ukuba iskripthi sibhaliwe ukuba sijonge ukukhangela, kuya kuphazamiseka xa ukukhwaza kuphelile. Ngenxa yesi sizathu, Lindela imikhosi yecandelo lokugcina iiparamitha ngokungagqibekanga. Ngelishwa, oku kungenza izinto zingathandeki kwezinye iiprogram. Ngokomzekelo, igobolondo ye-emac ifuna ukutshintsha imephu e-"evamile": iifowuni zifumana imephu kwiintsholongwane ezintsha kunokuba zibuyele iifayile zokubuyisela i-carriage, kwaye i-echoing ikhutshaziwe. Oku kuvumela umntu ukuba asebenzise imacs ukuhlela umgca wokufaka. Ngelishwa, Lindela ukuba akunakwenzeka ukuba uqaphele oku.

Unokucela ukuba Ulindeleke ukuba ungagqithisi isimo salo esingagqibekanga seerameter parameters, kodwa kufuneka uqaphele xa ubhala iincwadi zeempendulo kwiindawo ezinjalo. Kwimeko yeemacs, ugweme ngokuxhomekeka kwizinto ezifana nokuqhafaza kunye nokupheka kwemida.

Imithetho eyamkela iingxabano zithengisa uluhlu olulodwa ( ulindele ukuhluka kunye nokusebenzisana ) sebenzisa i-heuristic ukugqiba ukuba ngaba uluhlu luyiyo enye ingxabano okanye ezininzi. I-heuristic ingakwazi ukusilela kuphela kwimeko apho uluhlu luba lusetyenziso olulodwa oluye lwahlanganiswa ngokubanzi kunye nabalinganiswa abangabonakaliyo be-whitespace phakathi kwabo. Oku kubonakala kungenakwenzeka, nangona ingxabano "-nobrace" ingasetyenziselwa ukuphoqa ingxabano enye ukuba iphathwe njengengxoxo enye. Oku kunokwenzeka ukuba kusetyenziswe ngomatshini owenziweyo Ukulindela ikhowudi. Ngokufanayo, -bamba ibutho linye ingxabano ekufuneka ithathe njengamaphetheni / izenzo.

BUGU

Kwakuyilingo ngokwenene ukubiza inkqubo "ngesondo" (mhlawumbi "i-Smart EXec" okanye "I-Send-Expect"), kodwa ingqiqo (nokuba mhlawumbi i-Puritanism) iyenze.

Kwezinye iisistim, xa igobolondo izaliswa, ikhononda ngokungakhange ikwazi ukufikelela kwi-tty kodwa iyasebenza. Oku kuthetha ukuba inkqubo yakho inomsebenzi wokufumana ulawulo olulindelekileyo alukwaziyo malunga nalo. Nceda uqonde ukuba yintoni, kwaye uthumele le nkcazelo kum.

I-Ultrix 4.1 (ubuncinane iinguqulelo zakutshanje apha apha) ijonga ixesha lokufikelela kwi-1000000 ukuba lilingane ne-0.

I-Digital UNIX 4.0A (kwaye mhlawumbi nezinye iinguqulelo) wenqaba ukunika i- ptys xa uchaza umphathi we-SIGCHLD. Jonga iphepha lokunika ulwazi ngolwazi olungakumbi.

I-IRIX 6.0 ayibambisi iimvume ze-pty ngokuchanekileyo ukwenzela ukuba ukuba Ulindele ukuzama ukunika i-pty eyayisetyenziswe ngumnye umntu, iyahluleka. Ukuphucula kwi-IRIX 6.1.

I-Telnet (iqinisekiswe kuphela phantsi kwe-SunOS 4.1.2) ixhomekeke ukuba i-TERM ayilwanga. Le ngxaki phantsi kwe-cron, nakwi-scripts cgi, engachazi i-TERM. Ngaloo ndlela, kufuneka uyibeke ngokucacileyo - ukuba luhlobo luni oluqhelekanga. Kuphela kufuneka kusethelwe into ethile! Ezi zinto zilandelayo mhlawumbi zinelungelo kwiimeko ezininzi.

setha env (TERM) vt100

I-Tip (eqinisekisiwe phantsi kwe BSDI BSD / OS 3.1 i386) ixhomekeke ukuba i-SHELL ne-HOME ayilwanga. Le ngxaki phantsi kwe- cron , nakwi-scripts cgi , ezingachazi ezi ziguquko zendalo. Ngaloo ndlela, kufuneka uzibeke ngokucacileyo - ukuba luhlobo luni oluvakalayo. Kuphela kufuneka kusethelwe into ethile! Ezi zinto zilandelayo mhlawumbi zinelungelo kwiimeko ezininzi.

setha env (SHELL) / bin / sh set env (IKHAYA) / usr / yendawo / ibini

Ezinye iinkqubo ze-ptys zenzelwe ukwenzela ukuba i-kernel ikhuphe yonke imveliso engafundiweyo emva kwemizuzwana eyi-10 ukuya kwe-15 (inombolo yangempela yokuxhomekeka kokusebenza) emva kokuba inkqubo ivale i-descriptor yefayile. Ngaloo ndlela Lindela iinkqubo ezifana

Ukulala komhla wokulala 20 kulindeleke

luya ku silela. Ukuze ugweme oku, bongoza ii-program ezingekho nziswano kunye nokwenza esikhundleni sokuba uzalise . Nangona iimeko ezinjalo zibonakaliswa, ngokuqhelekileyo andizange ndihlangabezane neemeko apho umphumo wokugqibela weprogram edibanisa ngokwenene uya kulahlekelwa ngenxa yokuziphatha.

Ngakolunye uhlangothi, Phonsa i-UNICOS ptys ukulahla nayiphi na into engafundiweyo ngokukhawuleza emva kokuba inkqubo ivale i-descriptor yefayile. Ndixelele oku kuCray kwaye basebenza ukulungiswa.

Ngamanye amaxesha ukulibaziseka kuyadingeka phakathi kokukhawuleza kunye nempendulo, njengokuba i-interface ye-tty ishintsha izilungiso ze-UART okanye ixabiso le- baud ngokujonga i-start / stop bits. Ngokuqhelekileyo, konke oku kufunekileyo kukulala kwesibini okanye ezimbini. Inkqubo ephangaleleyo kukuzama ukuzama kwakhona ukuba i-hardware ikulungele ukufumana igalelo. Umzekelo olandelayo usebenzisa izicwangciso zombini:

thumela "i-speed 9600 \ r"; ukulala 1 lindele {ixesha lokuthumela {thumela "\ r"; exp_continue} i-$ prompt}

I-code-mgibe ayiyi kusebenza nayo nayiphi na umyalelo ohlala kwi-Tcl yomtsalane womcimbi, njengokulala. Ingxaki yukuthi kwi-loop yomcimbi, i-Tcl ilahla iikhowudi zokubuyisa ezivela kwi-async. Umsebenzi wokubeka iiflegi kwikhowudi yomgibe. Emva koko jonga iplagi emva kokuba umyalelo (ie, ukulala).

Umlindelo-umyalelo we-background ulahla-ubeka iingxabano kwaye awukho ncamango yokuhamba ngokubanzi.

& # 34; UKUHLOLA IINDLELA & # 34;

Kukho izinto ezimbalwa malunga nokulindela oku kungabi yiyo enembile. Eli candelo lizama ukujongana nezinye zezi zinto ngeengcebiso ezimbalwa.

Ingxaki esilindelekileyo yindlela yokujonga iigobolondo. Ekubeni ezi zilungelelaniswa ngokuhlukileyo ngabantu ngabanye kunye namaqoqo ehlukeneyo, i-rlogin ebonakalayo ebonakalayo inokuba nzima kunokwazi ngokukhawuleza. Ingqungquthela enengqiqo kukuba abasebenzisi bagcine ibonakaliso rhoqo echaza ngokukhawuleza kwabo (ngokukodwa, ekupheleni kwayo) kwimo engumongo EXPECT_PROMPT. Ikhowudi efana nale ilandelayo ingasetyenziswa. Ukuba i-EXPECT_PROMPT ayikho, ikhowudi isenethuba elihle lokusebenza ngokuchanekileyo.

setha i-prompt "(% | # | \\ $) $"; # ukukhawuleza kokukhawuleza kokubanjwa {setha i-$ env (EXPECT_PROMPT)}

Ndiyakhuthaza ukuba ubhale amaphethini aquka ukuphela kwayo nayiphi na into okulindele ukuyibona. Oku kugweba ithuba lokuphendula umbuzo ngaphambi kokubona yonke into. Ukongeza, ngelixa unako ukwazi ukuphendula imibuzo phambi kokuba ubone ngokupheleleyo, ukuba uphendule kusasa, impendulo yakho ingabonakala ibhalwe kwakhona phakathi kombuzo. Ngamanye amazwi, incoko enokuthi iya kuchaneka kodwa iya kukhangela.

Uninzi lweziphumo ziquka umlinganisi wendawo ekupheleni. Umzekelo, i-prompt evela kwi-ftp iyiyo 'f', 't', 'p', '>' kwaye. Ukudibanisa le nyathelo, kufuneka ulandelele nganye yabalimi. Yona mpazamo eqhelekileyo ukuba ingafaki ingqalelo. Faka i-blank blank.

Ukuba usebenzisa iphethini yefomu X *, * iya kufana nayo yonke imveliso efunyenwe ukususela ekupheleni kweX ukuya kwinto yokugqibela eyamkelweyo. Oku kuzwakala inembile kodwa kunokudideka ngenxa yokuba ibinzana elithi "into yokugqibela" ifumaneka iyahluka ngokuxhomekeka kwisantya sekhompyutha kunye nokuqhutyelwa kwe-I / O zombini nge-kernel kunye nomqhubi wecebo.

Ngokukodwa, abantu bavame ukubona inkqubo efikelele kwiindawo ezinkulu (i-athomu) xa ngokwenene ezininzi iinkqubo zivelisa umbane omnye ngexesha. Kucinga ukuba oku kunjalo, * kumzekelo wendima yangaphambili ingafanisa ukuphela komgca okhoyo nje nangona kukho kubonakala kuninzi, kuba ngexesha lomdlalo owawunayo yonke into efunyenweyo.

kulindeleke ukuba akukho ndlela yokwazi ukuba enye imveliso izayo ngaphandle kokuba iphethini yakho ibhalele ngqo.

Kwanokuba kuxhomekeke kwizinto ezixhomekeke kumgca ongekho ngobuchule. Akunakwenzeka nje ukuba iinkqubo zincinci zenza izithembiso malunga nohlobo lokuxhaphaza, kodwa ukunyanzeliswa kwenkqubo kunokuphelisa umgca wokuvelisa ukwenzela ukuba imilambo iphule kwiindawo ezibonakala zihleli. Ngaloo ndlela, ukuba unako ukubonisa abalinganiswa bokugqibela bokukhawuleza xa ubhala iipateni, kulungile ukuba wenze njalo.

Ukuba ulindele umzekelo kwiprogram yokugqibela yeprogram kwaye inkqubo ikhupha enye into endaweni yoko, awuyi kukwazi ukuyifumana loo nto ngegama elingundoqo. Isizathu kukuba ukulindela akuyi kuhamba ixesha - kunoko kuya kufumana uphawu lwe- eof . Sebenzisa oko endaweni yoko. Kungcono, sebenzisa zombini. Ngaloo ndlela ukuba loo mgca uhlala ushukunywe ngeenxa zonke, awuyi ku funeka uhlele umgca ngokwawo.

IiNewline zivame ukuguqulwa ukubuyela kwinqwelo, ukulandelelana komgca xa kuphuma umqhubi wesigxina. Ngaloo ndlela, ukuba ufuna umzekelo ohambelana ngokucacileyo nemigca emibini, ukusuka, uthi, printf ("foo \ nbar"), kufuneka usebenzise iphethini "foo \ nbar".

Ukuguqulelwa okufanayo kwenzeka xa ufunda kumsebenzisi, ngokulindela_ukucinga . Kule meko, xa ucinezela ukubuya, kuya kutshintshwa kwi-lineline entsha. Ukuba Ulindeleke ngoko udlulisela oko kwiprogram ebeka i-terminal yayo kwimodi eluhlaza (njenge-telnet), kuya kuba nenkinga, njengoko inkqubo ikulindele ukubuya kwenene. (Ezinye iinkqubo zixolela ngokuza kuthi ziza kuguqulela ngokutsha ngokutsha iifowuni kwiimbuyekezo, kodwa ininzi ayinayo.) Ngelishwa, akukho ndlela yokufumana ukuba inkqubo ibeka i-terminal yayo ibe yimodi eluhlaza.

Esikhundleni sokunyusa ngokutsha iifowuni zentlawulo ngeembuyekezo, isisombululo kukusebenzisa umyalelo othi "utywala obomvu", oya kumisa ukuguqulelwa. Qaphela, nangona kunjalo, oku kuthetha ukuba awuyi kuphinda ufumane iimpawu zokulungisa umgca.

ukudibanisa ngokucacileyo isigxina sakho kwisimo esilungileyo ukuze le ngxaki ingayi kuvela ngoko.

Kudla ngokuba luncedo ukugcina iiphasiwedi (okanye enye ingcaciso yabucala) kuLindela iempendulo. Oku akukhuthazwayo kuyo yonke into egcinwe kwikhompyutheni iyakwazi ukufumana umntu. Ngaloo ndlela, ukukhawuleza ngokukhawuleza ukufumana iiphasiwedi ezivela kwiskripthi yimbono enengqiqo kunokuba ibambelele ngokoqobo. Nangona kunjalo, ngamanye amaxesha ukungenelela okunjalo kukuphela kuphela.

Ngelishwa, inkqubo yefayili ye-UNIX ayikho indlela echanekileyo yokudala iempendulo ezisebenzayo kodwa ezingafundwanga. Iinkqubo ezixhasa izikripthi zeeklate ze-setgid zingayichaza ngokuchanekileyo oku oku:

Yenza Ulindele iskripthi (esineenkcukacha ezifihlakeleyo) njengesiqhelo. Yenza iimvume zayo zibe ngu-750 (-rwxr-x ---) kunye neqela elithembekileyo, oko kukuthi, iqela elivunyelwe ukuyifunda. Ukuba kuyimfuneko, yakha iqela elitsha kule njongo. Emva koko, yakha i-script / bin / sh kunye neemvume 2751 (-rwxr-s-x) eziphantsi kweqela elinye ngaphambili.

Isiphumo script esingafezwa (kwaye sifunde) ngabani na. Xa ifunyenwe, isebenza ukulindela iskripthi.

& # 34; FUNDA NAKHO & # 34;

I-Tcl (3), ingabonakali (3)
"Ukuhlola okulindelekileyo: iTekl-Based Based Toolkit yokuThuthukisa iiNkqubo eziSebenzayo" nguDon Libes, iphe. 602, ISBN 1-56592-090-2, iReyly and Associates, 1995.
"kulindeleke: Ukuphilisa ezo zinto ezingenakuLawula ukuBambisana" nguDon Libes, iinkqubo zeHlabathi ngo-1990 Inkomfa ye-USENIX, i-Anaheim, eCalifornia, ngo-Juni 11-15, 1990.
"Usebenzisa ukulindela ukuThuthukisa imisebenzi yoLawulo lweNkqubo" nguDon Libes, iinkqubo ze-1990 USENIX Inkqubo yokuPhathwa kweeNkqubo eziKhulu, iColor Springs, eColorado, Oktobha 17-19, 1990.
I-"Tcl: uLwimi oluLawulayo" ngoJohn Ousterhout, iNkcazo yeNgqele 1990 I-USENIX Conference, eWashington, DC, ngoJanuwari 22-26, 1990. "Ndikulindele: iZibhalo zokuLawula iiNkqubo eziSebenzayo" nguDon Libes, iComputing Systems , Vol. I-4, No. 2, iiNyuvesi zoLondolozo lweeNyuvesi zaseCalifornia, ngoNovemba ka-1991. "Inkqubo yokuHlola ukuThuthukiswa nokuPhathwa kweeNkqubo zokuHlangana", nguDon Libes, iinkqubo zeHlabathi 1992 kwiNkomfa yase-USENIX, iphe. 135-144, eSan Antonio, TX, NgoJuni 12-15, ngo-1992. "I-Kibitz - Ukudibanisa iiNkqubo ezininzi zokusebenzisana kunye", nguDon Libes, iSoftware - I-Practice & Experience, uJohn Wiley & Son, West Sussex, eNgilani, Vol.

23, uNombolo 5, ngoMeyi, 1993. "I-Debugger yezicelo ze-Tcl", nguDon Libes, Iinkqubo ze-Tcl / Tk Workshop ka-1993, eBerkeley, CA, ngo-Juni 10-11, 1993.

UMTHETHO

I-Don Libes, isiZiko seSizwe seMigangatho neThekhnoloji

AMAKHODI

Ndiyabulela uYohn Ousterhout weTcl, kunye noScott Paisley ukuphefumlelwa. Ndiyabulela uRob Savoye ngokulindela i-autoconfiguration code.

I-HISTORY ifayile ibonisa ubuninzi bokuzimela. Yenza ukufunda okuthakazelisayo kwaye inokukunika ingqiqo ngakumbi kule software. Ndiyabulela abantu abakhankanywe kuyo abandithumele izilungiso zegciwane kwaye banikela uncedo.

Ukuyila nokuphunyezwa kweLindleko kuye kwahlawulwa inxalenye yurhulumente waseUnited States kwaye ngenxa yoko yindawo yoluntu. Nangona kunjalo umbhali kunye ne-NIST bangathanda ikhredithi ukuba le nkqubo kunye namaxwebhu okanye izabelo zazo zisetyenzisiweyo.