Linux iyo Unix ayaa filaya

Filashadu waa barnaamij ka hadlaya barnaamijyada kale ee isdhexgalka sida waafaqsan qoraal. Ka dib qoraalka, Waardiyuhu wuxuu ogyahay waxa laga filayo barnaamijka iyo waxa jawaabta saxda ahi tahay. Luuqad tarjumaad ah ayaa bixisa qaababka jaangooyaha iyo heerarka sare ee kontaroolidda si ay u xakameeyaan wadahadalka. Intaa waxaa dheer, in isticmaalaha uu kantarooli karo isla markaana si toos ah ula shaqeyn karo marka la doonayo, ka dib marka uu soo celiyo xukunka qoraalka.

Expectk waa isku dhaf ah oo la filayo iyo Tk. Wuxuu u dhaqmaa sida rajada iyo rajada Tk. Filashada waxaa sidoo kale loo isticmaali karaa si toos ah C ama C ++ iyada oo aan lahayn Tcl.

Magaca "Baahida" waxa uu ka yimaadaa fikradda soo-celinta / rajooyinka soo-baxa ee ay ku badan yihiin barnaamijyada uucp, kermit iyo barnaamijyada kale ee kantaroolka. Si kastaba ha ahaatee, waxay ka duwan tahay sida ay u dheelitirto, rajadu waa mid guud ahaaneed si ay u noqon karto amar heer shaqaale ah oo leh barnaamij kasta iyo shaqada maskaxda ku haysa. Filashadu waxay la hadli kartaa dhowr barnaamijyo isku mar ah.

Waxa laga filan karo

Tusaale ahaan, halkan waa qaar ka mid ah waxyaalihii uu talada ka qaadi lahaa:

Waxaa jira sababo kala duwan oo ay qolofadu u qaban karin hawlahan. Dhamaanba waa suurtogal ah rajo.

Guud ahaan, Fikradda waa faa'iido u leedahay in la qabto barnaamij kasta oo u baahan in la isdhexgaliyo barnaamijka iyo isticmaalaha. Dhamaan waxyaabaha lagama maarmaanka u ah waa in isdhexgalka la barbar dhigo barnaamijka. Filashadu waxay sidoo kale awood u siin kartaa in ay gacanta ku soo celiso user iyada oo aan joojin barnaamijka la xakameynayo. Sidoo kale, isticmaaluhu wuxuu u celin karaa xukunka markasta waqti kasta.

Isticmaalka

Ka filo akhrinta cmdfile liiska amarrada si loo fuliyo. Fikradda waxaa lagu soo rogi karaa si aan toos ahayn nidaamyada taageera #. calaamadaynta adoo calaamadeynaya qoraalka sidii loo fulin lahaa oo loo sameyn lahaa xariiqda koowaad ee warqadda:

#! / usr / maxalli / bin / rajo-f

Dabcan, waddadu waa inay si sax ah u qeexaan halka ay ku suganyihiin nolosha. / usr / local / bin waa tusaale.

Xayeysiiska -c wuxuu hor dhigaa amar ah in la fuliyo ka hor qoraallada. Amarku waa in loo soo gudbiyaa si looga hortago in qolofka la jebiyo. Doorashadan waxaa loo isticmaali karaa dhowr jeer. Amarrada macaamiisha ah waxaa lagu fulin karaa hal--c adigoo kala saaraya semicolons. Amarada ayaa lagu fuliyaa si ay u muuqdaan. Markaad Isticmaalayso Kharashka, ikhtiyaarkan waxaa lagu qeexay asbaab.

Calaamadda -dadu waxay awood u leedahay soo-saarista maqnaashaha, taas oo ugu horreyntii sheegaysa dhaqdhaqaaqyada gudaha ee amarrada sida sugida iyo isdhexgalka. Calankani wuxuu leeyahay saameyn la mid ah "exp_internal 1" bilowgii Qorshe Kordhin ah, oo lagu daro version of Expect waa la daabacay.

Calaamadda -D waxay u suuragelisaa khal-khal-is-dhexgal. Qiime joogta ah waa inuu raacaa. Debugger wuxuu xakamayn doonaa nidaamka Tcl ka xiga haddii qiimaha aan eber ahayn ama haddii ^ ^ la cadaadiyo ama meel la jabiyo, ama amarka kale ee khaldan ee ku habboon qoraalka. Markaad isticmaashid Expectk, doorashadan waxaa lagu qeexay sida - Debug.

Astaanta -f waxay hor dhigeysaa faylka laga akhriyo amarrada. Calaamadda lafteedu waa ikhtiyaari maadaama ay tahay mid faa'iido leh markaad isticmaalayso #! si ay doodo kale loo soo gudbiyo khadka taliska. Markaad isticmaasho Doonista, ikhtiyaarkan ayaa lagu qeexay sida -file.

Marka la eego, faylasha amarka waxaa lagu xasuusiyaa xasuusta oo lagu fuliyaa dhammaanteed. Marmar waxaa suuragal ah in la akhriyo faylasha hal xaraf waqti. Si loo qasbo faylasha asluubta ah in la maareyn karo habkan, isticmaal calanka -b. Markaad Isticmaalayso Kharashka, xulashadan waxaa lagu qeexay sida -fuffer.

Haddii xariiqa "-" loo soo gudbiyo sida filename, fikradda caadiga ah ayaa loo akhriyaa halkii. Isticmaal "./-" si aad uga akhridid ​​faylka dhabta ah "-".

Calanka -i wuxuu keenaa in la isku dayo in la isku daro amarro amar ah halkii laga akhrisan lahaa faylka. Bixinta ayaa la joojiyaa iyada oo loo marayo amarka bixitaanka ama EOF. Calanka -i waxaa loo maleynayaa haddii aan faylka amar-iyo -c loo isticmaalin. Markaad isticmaashid Expectk, ikhtiyaarkan waxaa lagu qeexay sida-dhexdhexaad.

- waxaa loo isticmaali karaa in la gooyo dhamaadka fursadaha. Tani waa mid waxtarka leh haddii aad rabto in aad ka gudubtid dood door ah oo la mid ah qoraalkaaga iyada oo aan la tarjumin Waardiyaha. Tani waxay faa'iido u noqon kartaa in #! khadka si looga hortago turjumaadda calanka u eg oo laga filayo. Tusaale ahaan, kuwan soo socda ayaa ka tagi doona doodda asalka ah oo ay ku jiraan magaca codka ee argigga badalaadda .

#! / usr / degaanka / bin / rajo -

Ogsoonow in qaadista (3) iyo fulinta (2) heshiisyada caadiga ah waa in la fiiriyaa marka lagu daro doodaha #. xariiqa.

Faylka $ exp_library / expect.rc waxaa si toos ah loo hirgeliyaa haddii ay joogaan, marka laga reebo calanka -N calanka. (Marka la isticmaalayo Expectk, ikhtiyaarkan waxaa lagu qeexay -NORC.) Isla markaa ka dib, faylka ~ / .expect.rc si toos ah ayaa loo hirgeliyaa, haddii calanka-isticmaalo. Haddii jawiga badalaadda DOTDIR lagu qeexo, waxaa lagu daaweeyaa liisto iyo .expect.rc waxaa laga akhriyaa halkaa. Markaad isticmaasho Expectk, xulashadan waxaa lagu qeexay -norc. Kalluumeysigani wuxuu dhacaa kaddib marka la fuliyo calamada -c.

-V wuxuu keenaa rajo inuu daabaco lambarkiisa lambarka iyo ka bixitaanka. Calanka u dhigma ee Expectk, kaas oo isticmaala magaca calanka dheer, waa -shax.

Argaggixisada la doorto waxaa lagu dhajiyay liis waxaana lagu kaydiyaa variable variable argv iyo. argc waxaa la bilaabay dhererka argv.

Argv0 waxaa lagu qeexay inuu yahay magaca qoraalka ama ikhtiyaariga ah haddii aan loo adeegsan qoraalka. Tusaale ahaan, kuwan soo socda ayaa daabacaya magaca qoraalka iyo saddexda doodood ee hore:

send_user "$ argv0 [lrange $ argv 0 2] \"

Talooyin

Waardiyeyaashu waxay isticmaalaan Luqadda Taliska Qalabka Tcl waxay bixisaa socodka kumbuyuutarka (haddii, loogu talagalay, jebin), qiimeynta codka iyo dhowr waxyaalood oo kale sida qeexidda habka qaabaynta. Talooyinka loo isticmaalo halkan laakiin aan la qeexin (dejin, haddii, exec) waa Tcl amarrada. Waardiyeyaashu waxay taageertaa amarrooyin dheeraad ah. Haddii aan si kale loo cayimin, amarrada ku soo celi xarfaha madhan.

Amarradan ayaa ku qoran liiska khadka si ay si deg-deg ah loogu dhisi karo. Si kastaba ha noqotee, dadka isticmaala cusub waxay u sahlanaan karaan in ay bilaabaan iyagoo akhrinaya sharraxaadda caanaha, u diraan, filanayaan, iyo isdhexgalaan, sida ku xusan.

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

xiraa xiriirka geedi socodka hadda. Inta badan barnaamijyada isdhexgalka ayaa lagu ogaanayaa EOF marka ay ka baxaan ama ka baxaan; Saasaa u dhow sida caadiga ah ku filan inuu dilo habka . Xayaysiiska -i wuxuu ku dhawaaqayaa habka loo xiro oo ku xiran magaca spawn_id.

Labada filan iyo isdhexgalka labadaba waxay ogaanayaan marka nidaamka hada ka baxayo iyo si aan toos ahayn u qabanayaan, laakiin haddii aad daadinayso nidaamka , waxaad ku tidhaahdaa, "exec dilaan $ pid", waxaad u baahan tahay inaad si cad u wacdo .

Calanka-akafiga ayaa go'aaminaya in idanka xayawaanku uu xiran yahay geeddi-socod kasta oo la soo dhejiyey ama haddii geedi-socodka la dhameeyo. Si aad uga baxdid caaro furan, u isticmaal qiimaha 0. Qiimaha aan lahayn eber qadar ah wuxuu ku khasbayaa in xayawaanka la xiro geeddi kasta oo cusub.

Calanka sirta ah wuxuu xidhaa addoonta la xidhiidha idada caanaha. Marka xidhiidhku xiran yahay, addoonkuna si toos ah ayuu u xiran yahay haddii uu weli furan yahay.

Xaalad kasta ha ahaato haddii xiriirku uu si aan toos ahayn u xiran yahay, waa inaad wacdid sugidda si aad u nadiifisid xajinta nidaamka xuduudaha. Xeerka u dhaw lama soo waco sugitaan maadaama uusan jirin wax dammaanad ah in xidhitaanka nidaamka xidhiidhku uu sababi doono inuu ka baxo.

debug [[-now] 0 | 1]

waxay xakameysaa debugger Tcl oo kuu oggolaanaya in aad ka gudubto weedhaha oo aad u sameysid dhinacyo kala gooyo.

Iyadoo aan wax dood ah jirin, 1 ayaa la soo celiyaa haddii khilaafka uusan ku socon, haddii kale 0 ayaa la soo celiyaa.

Iyada oo dood 1 ah, debugger ayaa la bilaabay. Iyada oo dood 0, debugger ayaa la joojinayaa. Haddii dood 1 ay ka horreyso calanka aadaabta, debugger ayaa si dhakhso ah loo bilaabay. Haddii kale, debugger waxaa lagu bilaabay qoraalka Tcl ee xiga.

Amarka khalkhalka wuu ka baddalayaa dabin kasta. Isbarbardhaw si aad u bilawdo Ka filo calamadda -D.

Amarka kala-go'yada wuxuu ka fogaanayaa geedi socodka loo yaqaan ' terminal' . Waxay ku sii socotaa asalka. Nidaamka waxaa la siiyaa koox hawleedkeeda. Heerka I / O waxaa loo diraa / dev / null .

Qaybtan soo socota waxay isticmaashaa ciribtirka si ay u sii wado qoraalka asalka ah.

haddii {[fork]! = 0} ka bixitaanka. . .

Qoraalkan soo socdaa wuxuu akhriyaa lambarka sirta kadibna wuxuu soconayaa barnaamij kasta saacad kasta oo raba codsiga mar kasta oo ay socoto. Qoraalku wuxuu soo saaraa erayga sirta ah si aad uheli kartid kaliya hal mar.

{sifo "} {} qormo} {qiyaasta} {0} {hurdayda = 0} {hurdada 3600; sii wad} ciribtirka ciriiriga qaas ah {private_pro} 1, xaraf) \ r \ ". . . xiga}

Faa'iido ah in la isticmaalo jooji khariidadda nidaamka asynchronous khariidadda (&) waa in Expect ayaa badbaadin kara xuduudaha terminal ka hor joojinta iyo ka dibna ku dabbaqi doonaa ptys cusub. Iyadoo leh, Waardiyuhu ma laha fursad uu ku aqriyo xuduudaha kumbuyuutarka tan iyo inta uu gaabisku goosan waayey wakhtigii la filayay inuu koontaroolo.

ka baxa [kudhufo] [xaaladda]

sababaha Ka fila inuu ka baxo ama haddii kale u diyaar garoobo.

Calanka- aaladda ayaa sababaya doodda soo socota in loo isticmaalo bixiye bixiye. Haddii aan laga doodin, cidda kaashka ah ee hadda la soo celiyo waa la soo celiyaa.

Calaamadda jumlada ah waxay keenaysaa rajeyn in la diyaariyo si ay uga baxdo, lana joojiyo gaabinta dhabta ah ee nidaamka hawlgalka. Qalabka bixiyaha ee la-qeexay ayaa la ordi doonaa iyo sidoo kale shaqsiyaadka gudaha ee filitaanka. Ma jiro wax amarro ah oo dheeraad ah in la fuliyo. Tani waa mid faa'iido leh haddii aad shaqeyneyso Ka filo inaad kordhiso Tcl kale. Turjubaanka hadda (iyo daaqada muhiimka ah ee ku yaal deegaanka Tk) ayaa sii ah si wakhti dheer oo Tcl kale loo nadiifiyo. Haddii dib-u-celinta dib-u-celinta loogu yeedho mar kale (si kastaba ha ahaatee tani waxay dhici kartaa), kuwa shaqaaluhu ma'ahaan dib u noqdaan.

Marka laga baxo, dhammaan isku xirnaanta geeddi-socodka mashquulinta waa la xidhay. Xiritaanka waxaa lagu ogaanayaa sida EOF ayadoo loo marayo geeddi socodka mashquulinta. ka baxsan wax tallaabo ah kama qaadin wax ka baxsan nidaamka caadiga ah ee (2) nidaamka caadiga ah. Sidaa daraadeed, geedi socodka mashquulsan ee aan hubin EOF ayaa socon kara. (Xaaladaha kala duwan ayaa muhiim ah in la go'aamiyo, tusaale ahaan, waxa calaamadinaya geeddi-socodka mashruuca la soo diri doono, laakiin kuwani waa nidaam ku-xidhan, sida caadiga ah lagu diiwaan-geliyo ka-bixidda (3).) Hawlaha dhar-dhaanta ee sii wadaya waxaa lagu dhaxli doonaa barnaamijka.

Xaaladda (ama haddii aan la cayimin) waxaa loo soo celiyaa xaaladda ka-baxitaanka ee filitaanka . ka bixitaanka si toos ah ayaa loo fuliyaa haddii dhamaadka qoraalka la gaaro.

exp_continue [-continue_timer]
Amarku wuxuu joojiyaa inuu filo inuu sii wado fulinta halkii uu ku noqon lahaa sidii caadiga ahayd. By default default exp_continue dib u jadwalka waqtiga jadwalka. Calanka -continue_timer wuxuu ka hortagayaa saacadda in laga bilaabo dib u soo noqoshada. (Fiiri filashada macluumaad dheeraad ah.)

exp_internal [-ff] qiimaha
waxay keeneysaa amarrooyin kale oo ay ku soo diraan macluumaadka ogaanshaha ogeysiinta gudaha si ay u sugaan in ay xakameyaan haddii qiimaha aan eber ahayn. Natiijadan waa naafo haddii qiimuhu yahay 0. Macluumaadka ogaanshaha waxa ka mid ah dabeecad kasta oo la helay, iyo isku day kasta oo la sameeyey si loo waafajiyo soo saarida wax soo saarka ee ka soo horjeeda qaababka.

Haddii faylka ikhtiyaariga ah la keeno, dhammaan wax-soo-saarka caadiga iyo ka-hortagidda waxaa lagu qorayaa faylkaas (iyada oo aan loo eegin qiimaha qiimaha ). Diiwaanka wax soo saarka ee hore loo soo xiray ayaa la xiray.

Xayeysiiska-- fo waxay sababtaa soo noqnoqoshada si ay u soo celiso sharaxaad ku saabsan doodihii ugu danbeeyay ee aan la bixin.

exp_open [args] [-i spawn_id]
waxay soo celineysaa aqoonsiga faylka Tcl taas oo u dhiganta aqoonsiga asalka ah ee asalka ah. Aqoonsiga faylka ayaa markaa loo isticmaali karaa sidii markii ay furan tahay amarka furan ee Tcl. (Kaarka caanuhu waa inaan la isticmaalin, waardiye waa inaan la fulin.

Calanka- aeopopen wuxuu ka tagaa idanada adoo furan si uu u galo amarrada laga filayo. Waa in la sugo sugidda cowska.

exp_pid [-i spawn_id]
waxay soo celinaysaa nidaamka geeddi-socodka ee u dhiganta nidaamka hadda socda. Haddii calanka-loo isticmaalo, fayruska dib loo soo celiyo wuxuu u dhigmaa mid ka mid ah sheyga caanaha lagu siiyay.

exp_send
waa magac kale oo loo diro .

soo noqoshada
waa magac kale oo loo yaqaan ' send_error' .

exp_send_log
waa magac kale oo loogu talagalay Send_log .

exp_send_tty
waa magac kale oo loogu talagalay Send_tty .

exp_send_user
waa magac u taagan dir_user .

exp_version [[-exit] version]
waa mid waxtar leh si loo hubiyo in qoraagu uu ku habboon yahay qaybta hadda la filayo.

Iyadoo aan wax dood ah, noocyadda hadda la filayo ayaa la soo celiyaa. Qormadan waxaa laga yaabaa in lagu qoro warqaddaada. Haddii aad ogtahay inaadan isticmaaleynin qaababka ugu dambeeyay, waxaad soo sheegi kartaa koobi hore.

Versions waxay ka kooban tahay saddex lambar oo kala soocaya dhibco. Marka hore waa lambarka ugu weyn. Scripts ayaa loogu talagalay daabacaadyada Fikradda oo leh lambar kale oo ka duwan midka hubaal ma shaqayn doono. exp_version waxay ku soo noqotaa qalad haddii lambarrada waaweyn aysan ku haboonayn.

Marka labaad waa lambarka yar. Scripts lagu qoray nuqul leh lambar yar oo ka yar kan hadda jira wuxuu ku xirnaan karaa qaar ka mid ah muuqaal cusub oo laga yaabo inaanu ordo. exp_version waxay ku soo noqotaa qalad haddii lambarrada waaweyn ay ku ciyaaraan, laakiin lambarka yar ee qoraalka ahi wuu ka weyn yahay kan rajeynaya .

Saddexaad waa lambar aan ka ciyaareynin qeyb ka mid ah isbarbardhigga version. Si kastaba ha ahaatee, waxaa la kordhiyay marka qaybinta qaybinta barnaamijyada la filayo in wax laga beddelo, sida dukumiintiyo dheeri ah ama soo-helitaan. Waxay dib u dajineysaa 0 marka la eego nooc kasta oo yar yar oo cusub.

Iyada oo calanka -exiraadka , Ka fila in uu qalad iyo ka baxo haddii version ay tahay taariikhda.

waxay filanayaan [[-you] gashiga jirka1] ... [-saxaanta] patn [bodyn]
sugayaa illaa mid ka mid ah tusaalooyinka la mid ah soo saaridda geedi socodka mashquulsan, waqti cayiman ayaa la soo dhaafay, ama dhamaadka feylka ayaa la arkaa. Haddii jidhka ugu danbeeya uu faaruqo, waa laga saari karaa.

Tilmaamyada laga soo xigtey filimkii ugu dambeeyay ee dhowaanahan ahaa ayaa horay loo isticmaalay qaabab kale. Tusmooyinka laga soo xigtey filimka ugu dambeeya ee dhowrista- taliska ayaa si aan toos ahayn loo isticmaalaa ka dib qaabab kasta oo kale.

Haddii doodaha guud ee la sugayo oo dhan ay u baahan yihiin in ka badan hal xariiq, dhammaan doodaha waxaa laga yaabaa inay noqdaan mid "si siman" hal mar si looga fogaado joojinta xariiq kasta oo leh lakab. Xaaladdan oo kale, beddelka caadiga ah ee Tcl ayaa dhici doona inkasta oo jeebka.

Haddii qaabku yahay ereyga muhiimka ah, jirka ayaa loo hirgeliyaa marka uu dhammaado faylka. Haddii qaabku yahay waqtiga loo yaqaan 'timeout keywordout' , jidhka ku habboon ayaa la fuliyaa waqtigii loo qabtay. Haddii aan la isticmaalin erayo muhiim ah oo la adeegsanayo, ficil aan rasmi ah lahayn waa la fuliyaa waqtiga loo marayo. Waqtiga waqtiga ku-meel-gaadhka ah waa 10 ilbiriqsi laakiin waxaa laga yaabaa in la dhigo, tusaale ahaan 30, oo amar ah "waqti go'an 30". Wakhti aan xadidnayn waxaa lagu tilmaami karaa qiimaha -1. Haddii qaabku yahay qodobka muhiimka ah , jirka ayaa loo hirgeliyaa waqti go'an ama dhamaadka faylka.

Haddii qaabku isku mid yahay, markaa jirka ayaa la dhigi doonaa. waxay filanayaan natiijada jirka (ama xarfaha madhan haddii aan lahayn nidaam isku dheelitiran). Xaaladdan oo ah qaabab badan ayaa la mid ah, kan ugu horreeya ee muuqda ayaa loo isticmaalaa inuu doorto jirka.

Mar kasta oo soo saarka cusub soo baxo, waxaa loo barbar dhigaa qaab kasta oo ay ku qoran yihiin liiska ay ku qoran yihiin. Sidaa awgeed, waxaad tijaabin kartaa maqnaansho la'aan adoo samaynaya qaabkii ugu dambeeyay ee la damaanad-qaadey in ay muuqdaan, sida dhaqso. Xaaladaha aysan jirin wax degdeg ah, waa inaad isticmaashaa wakhti (sida aad rabto haddii aad isdhex gashan lahayd gacanta).

Qaababka ayaa lagu qeexay seddex siyood. Marka la eego qaabka, shuruudaha waxaa lagu qeexay sida Tcl ee taliska string string . (Nidaamyadani waxay sidoo kale la mid yihiin calaamadaha caadiga ah ee C-shell inta badan loo yaqaan "glob"). Calaamadda -gl waxaa laga yaabaa in loo isticmaalo in lagu ilaaliyo nidaamyada laga yaabo in ay isku kalsoonaan karaan calaamadaha laga filayo inay sidaas sameeyaan. Qaab kasta oo ka bilaabma "-" waa in la ilaaliyaa habkan. (Dhammaan xarfaha laga bilaabo "-" waxaa loo hayaa ikhtiyaar mustaqbalka ah.)

Tusaale ahaan, qaybta soo socota waxay u eegtahay gal guul leh. (Ogsoonow in abort loo maleynayo inuu yahay nidaam lagu qeexay meelo kale ee qoraalka.)

filanayaa inay mashquul yihiin [mashquulayaan]; exp_continue} Abort oo jajabiyay "fure aan sax ahayn" ka jooji waqtiga qadarin}

Qodobbada ayaa lagama maarmaan u ah qaabka afaraad tan iyo markii ay ka kooban tahay meel, taas oo haddii kale ay kala soocayso qaabka ficilka. Tilmaamayaasha la mid ah tallaabada la midka ah (sida 3aad iyo 4aad) waxay u baahan yihiin mar kale diiwaangelinta tallaabooyinka. Tani waxay ka fogaan kartaa adigoo isticmaalaya qaababka regexp-style (eeg hoos). Faahfaahin dheeraad ah oo ku saabsan qaabeynta qaababka qaabka loo yaqaan "glob-style styles" ayaa laga heli karaa buugga Tcl.

Nidaamyada qaab-nidaamsan waxay raacaan qormada lagu qeexay calaamadda Tcl (gaaban "cadeeyn joogto ah"). Qaababka regexp waxaa lagu soo bandhigay calanka -re . Tusaalaha hore ayaa dib loo qori karaa iyadoo la isticmaalayo regexp sida:

filanayaa inay mashquul yihiin [mashquulayaan]; exp_continue} -re "ku fashilmay ereyga" aan saxsaneyn "waqtigiisii ​​la joojiyey waqtigii la xiray}

Noocyada qaababka labadaba waa "aan la xakamayn". Tani waxay ka dhigan tahay in qaababka aysan u baahneyn inay la midoobaan dhammaan xarigaha, laakiin waxay bilaabi karaan oo dhamaayaan ciyaarta meel kasta oo xarig ah (illaa inta ay wax walba ku habboon yihiin). Isticmaal ^ si aad u dhigto bilowga xadhig, iyo $ si loo dhigo dhamaadka. Ogsoonow haddii aadan sugin dhammaadka xarig, jawaabahaaga si fudud ayaa uugu dhejin karaa bartamaha dhirta inta ay ku habboonyihiin geeddi-socodka mashruuca. Iyadoo weli soo saarin natiijooyin sax ah, wax soo saarku wuxuu u eg yahay mid aan caadi ahayn. Sidaa darteed, isticmaalka $ waxaa lagu dhiirigelinayaa haddii aad si toos ah u tilmaami karto jilayaasha dhamaadka xarig.

Xasuuso in tifaftirayaal badan, ^ iyo $ u dhigmaan bilowga iyo dhammaadka xariiqyada. Si kastaba ha noqotee, sababta oo ah rajayntu maaha mid toos ah, jaantusyadani waxay u dhigmaan bilawga iyo dhammaadka xogta (sida loola jeedo khadadka) hadda ee rajada la qabsashada. (Sidoo kale, fiiri qoraalka hoos ku qoran "nidaamka dhuumaha.")

Calaamadda -exafku wuxuu keenaa habka loo qaabeeyo sida "sax". Faahfaahin la'aan *, ^, iwm ayaa la sameeyaa (inkasta oo ay tahay in la ilaaliyo heshiiska caadiga ah ee Tcl). Nidaamka joogtada ah mar walba waa mid aan la cayimin.

Calanka ' -nocase wuxuu keenaa jilayaasha waawayn ee wax soo saarka si loo barbardhigo sidii ay ahaayeen jilayaal yar. Habka aan saameyneynin.

Inta akhrinta wax soo saarka, in ka badan 2000 baytari waxay xooga saari kartaa byte hore si ay u noqdaan "la illoobo". Tani waa la bedeli karaa xiriirka isboortiga . (Xasuuso in qiimaha xad-dhaafka ah ee qaaliga ah uu hoos u dhigi karo tusaaleeyaha qaabka.) Haddii liiska la socdo buuxda , waxaa la dhigi doonaa hay'ad la mid ah haddii xiriirka match_max ee la helay oo aan lahayn qaabab kale. Haddayna isticmaalin ereyga 'keyword key_buffer' , ereyada la illoobey ayaa loo qoraa inay rajeynayaan.

Haddii liistada liistada ay tahay erayga muhiimka ah, iyo nulls waa la oggol yahay (iyada oo loo marayo taliska ka saarida remove_nulls ), hay'adda u dhiganta ayaa la fuliyaa haddii hal ASCII 0 la isu dhigo. Suurtagal ma ahan in lagu barbardhigo 0 byte iyadoo la marayo glob ama regexp qaababka.

Marka loo eego qaab (ama eof ama full_buffer), wax kasta oo isbarbardhigaya iyo soo-saarka aan hore loo dhigin waxaa lagu keydinayaa variable expect_out (buffer) . Ilaa 9 calaamadood oo celcelis ah ayaa lagu keydiyaa doorsoomayaasha rajeynaya (1, xaraf) iyada oo loo marayo expect_out (9, xaraf) . Haddii calanka xayeysiiska loo isticmaalo ka hor intaanay jirin, indices oo bilawga iyo dhammaadka ah (qaab ku habboon lakab ) 10ka xaraf ayaa lagu keydiyaa doorsoomayaasha rajeynaya (X, bilawga) iyo expect_out (X, dhammaad) meesha X digit, waxay u dhigantaa booska hoose ee bakhshadda. 0 waxaa loola jeedaa xarriijimaha u dhigma shaxda oo dhan waxaana loo soo saaraa qaababka caalamiga ah iyo sidoo kale qaababka dib-u-dajinta. Tusaale ahaan, haddii geedi socod uu soo saarey "Abcdefgh \ n", natiijada:

filan "cd"

waxay la mid tahay hadi wax soo saarka soo socda:

Sare u rajeynayaa (0, xaraf) cd set rajout_out (buffer) abcd

iyo "efgh \ n" waxaa lagu tagaa bakhshadda badeecadda. Haddii geeddi-socod loo soo saaro "abbbcabkkkka \ n", natiijada:

filan-sheego -re "b (b *). * (k +)"

waxay la mid tahay hadi wax soo saarka soo socda:

(1, dhamaad) 3 setup expect_out (1, string) bb set_out_out (2, bilawga) 10 set setupout_out (2, dhameeyo) 10 setup expect_out (2, string) k setup expect_out (buffer) abbbcabkkkk

iyo "a \ n" ayaa lagu tagaa bakhshadda soo saarida. Habka "*" (iyo -re) * *) wuxuu daadi doonaa bakhti-soo-saarka iyada oo aan wax akhris ah laga helin geeddi-socodka.

Caadi ahaan, wax soo saarka la isku dhajiyey waxaa laga saaraa kaararka gudaha ee filitaanka. Tan waxaa laga yaabaa in laga hortago iyada oo horey loogu qaabeynayo calanka calaamadeynaya. Calankani wuxuu si gaar ah uga faa'iideysan karaa tijaabinta (iyo waxa loo soo gaabin karaa "-nad" si sahlan markaad tijaabineyso).

Badeecada baaxada leh ee la xidhiidha wax soo saarka (ama eof ama full_buffer) ayaa lagu kaydiyaa rajada (spawn_id) .

Xayawaanka waqti-dhaafka ah wuxuu keenaa amarka la sugayo ee hadda loo isticmaalo in la isticmaalo qiimaha soo socda sida waqtiga loo isticmaalayo qiimaha variable variable.

Marka la eego shuruudaha, qaababku waa ka soo horjeeda wax soo saarka geedi socodka hadda, si kastaba ha ahaatee calanka -i wuxuu ku dhawaaqayaa wax soo saarka liiska magacyada spawn_id ee loo yaqaan 'custom spawn_id' oo la mid ah qaababka soo socdaa (illaa xiga -i ). Liistada spawn_id waa inay noqotaa liiska xayndaabka ee xayeysiinta spawn_ids ama variable ah oo la xidhiidha liiska noocyada spawn_ids.

Tusaale ahaan, tusaalahan soo socda waxay sugayaan in "ku xiran" geedi socodka hadda, ama "mashquul", "guuldarey" ama "erey aan sax ahayn" oo ka yimid spawn_id oo lagu magacaabo $ proc2.

filanaya {-i $ proc2 mashquul {mashquuliya} mashquul \ n; exp_continue} -re "ku fashilmay ereyga" aan saxsaneyn "waqtigiisii ​​la joojiyey waqtigii la xiray}

Qiimaha isbeddelka caalamiga ah any_spawn_id waxaa loo isticmaali karaa in lagu barbardhigo naqshadaynta xayawaan kasta oo lagu magacaabo calaamadaha kale ee loo yaqaan amarada sugitaanka hadda. Spawn_id calanka-a oo aan lahayn qaab la xidhiidha (ie, si deg deg ah ula socdo mid kale -i ) ayaa la heli karaa qaabab kale oo isku mid ah oo la filayo amar la xidhiidha any_spawn_id.

Calanka -i wuxuu sidoo kale magacaabi karaa isbeddel caalami ah kaas oo dhacda isbarbardhiga waxaa loo akhriyaa liistada idada. Kala beddelka ayaa mar kale hadana markasta isbeddelaya. Tani waxay bixisaa hab lagu badalo ilaha I / O inta uu amarka fulinayo. Cunnooyinka idman ee loo bixiyay habkan waxaa loo yaqaan 'dad aan toos ahayn' ids.

Dhaqdhaqaaqyada sida jebinta oo sii wadaan sababaha u xakameynaya dhismayaasha (ie, loogu talagalay ) inay ku dhaqmaan sida caadiga ah. Amarku wuxuu joojiyaa inuu filo inuu sii wado fulinta halkii uu ku noqon lahaa sidii caadiga ahayd.

Tani waxay faa'iido u leedahay in laga fogaado wareegyada cad ama soo-jeedinta rajada celceliska. Tusaalahan soo socda waa qeyb ka mid ah jajab si loo baabi'iyo rlogin. Exp_continue wuxuu ka fogaanayaa in uu qoro bayaankii labaad ee filitaanka (si aad u raadsato isla markiiba) haddii roogintu ay macquul tahay erayga sirta ah.

Fadlan kaalay {Password: {stty -cho send_user "sir ah ($ user) $ host:" expect_user -re "(. *) \ n" dir_user "\ n" dir "$ expect_out (1, string) \ r" stty echo exp_continue} khalad {key_continue} "soodhad aan sax ahayn ama xisaabin" null "} timeout {send_user" isku xirka $ martida martigelinta \ n "ka bixitaanka eof {sent_user \" xidhiidhka martida guulaystay: $ expect_out (buffer) "exit} re $ prompt}

Tusaale ahaan, qaybaha soo socda ayaa laga yaabaa in ay gacan ka geystaan ​​hagaha isticmaale ee isdhexgalka kaas oo horayba u shaqeynayey. Xaaladdan oo kale, gundhiga ayaa la geliyaa qaab cayriin ah. Haddii uu isticmaalaayo "+", isbeddel ayaa la kordhiyaa. Haddii "p" la cadaadiyo, dhowr soo noqod ayaa loo diraa geeddi-socodka, oo laga yaabo in la soo celiyo si ka duwan, iyo "aniga" waxaan u oggolaanayaa in isticmaalaha uu dhexgalo geedi socodka, si wax ku ool ah u xaday xakamaynta qoraalka. Xaalad kasta, exp_continue waxay u ogolaataa in hadda la filayo in ay sii wadaan isbedelka qaabka ka dib fulinta ficilka hadda.

dufanka ceeriin -hose-sugitaanka_haddii {-i $ user_spawn_id "p" {dir "\ r \ r \ r \"; exp_continue} "+" {incredoo; exp_continue} "aniga" is dhexgalka; exp_continue} "quit" exit exit}

Marka la eego, exp_continue dib u hagaajin waqtiga jadwalka. Waqtiga aan dib loo bilaabin, haddii ay dhacdo in dib loo dhigo lagu magacaabo calanka -continue_timer .

rajeynayaa] [expect_args]
wuxuu u shaqeeyaa si la mid ah rajooyinka-horaan marka laga reebo haddii shuruudaha labadaba filanayaan oo ay filanayaan_Dhammaanba , ujeedada filan ayaa la isticmaalayaa. Fiiri balanqaadkii hore ee horey loogu talagalay macluumaad dheeraad ah.

rajo-gelinta [raj]
waxay qaadataa doodo isku mid ah sida filan , hase yeeshee si dhakhso ah ayay u soo noqotaa. Tijaabooyinka ayaa la tijaabiyaa mar kasta oo talobixin cusub la yimaado. Qaab-dhismeedka wakhtiga iyo wakhtiguba waa wax aan macquul ahayn si loo sugo booska dib- u- dhaca iyo si aamusnaan loo tuuro. Haddii kale, taliska rajo-gelinta wuxuu isticmaalaa rajo-gelinta hore iyo rajada-

Marka la filayo in falalka rajo- celinta la qiimeeyo, hawlgalka asaasiga ah ee isku midka xayawaanka isku midka ah ayaa la xannibayaa. Farsamooyinka asalka ah ayaa la furayaa marka hawsha la dhammeeyo. Inkasta oo farsamooyinka asalka ah la xakameeyo, waxaa suurtogal ah in la sameeyo (farsamo) filanayo isla cambaareynta id.

Suurtagal maaha in la fuliyo filashada iyadoo la filayo in dib loo furo . Sugidaada booska ee idman qaas ah ayaa la tirtiraa adigoo ku dhawaaqaya rajo cusub oo dib u dhac leh oo leh isla id ah. U sheegidda rajo-celinta- dib-u-qaabaynta qaab-dhismeed aan lahayn qaab ka baxsan idanka ka soo baxa awooda si loo waafaqo astaamaha asalka ah.

expect_before [expect_args]
waxay qaadataa doodo isku mid ah sida filan , hase yeeshee si dhakhso ah ayay u soo noqotaa. Lammaanaha qaab-dhaqameed ee ka soo baxa rajadii ugu dambaysay ee horey u jirtay iyadoo la mid ah caan bixinta isku midka ah ayaa si aan toos ahayn loogu darey waxkasta oo soo socota oo la filayo . Haddii qaabku isku mid yahay, waxaa loola dhaqmayaa sida haddii lagu tilmaamey talada lafteeda, iyo hay'adda la xidhiidha ayaa lagu fuliyaa iyadoo la raacayo amarka sugitaanka. Haddii astaamaha labaduba filanayaan hor-u-mar iyo rajo- celin karaan, qaabka hore loo adeegsanayo.

Haddii aan shuruudo la cayimin, daloolka caanaha lama hubin qaab kasta.

Haddii aan laga dhaafin calaamadda -i , rajada ka horeysa horey udhigmey sheyga qaawan ee lagu qeexay xilligii la sugayay amarkii hore ee ahaa (ma ahan markii nidaamkoodu u eg yahay).

Tikidhada--fo waxay keenaysaa in la sugo ka hor inta aanad soo celin waxyaabahan hadda jira ee qaababka ay u egtahay . Marka la eego, waxay ka warameysaa coodsida hadda jirta. Tilmaamaha gaarka ah ee cadadka id ah waxaa laga yaabaa in lagu siiyo macluumaad ku saabsan idadaas. Tusaale ahaan

expect_before -info -i $ proc

Inta ugu badan hal shuruudaha id ah ayaa la bixin karaa. Calanku-dhidibada ayaa xakameynaya idoyinka tooska ah ee ka soo baxa kuwaas oo ka yimaada kaliya qeexitaan aan toos ahayn.

Halkii laga heli lahaa shuruudaha id ah, calanka "-all" wuxuu keeni doonaa "-info" inuu ka warbixiyo dhamaan idilada caanaha.

Soo saaridda calanka--Foomka ayaa dib loo isticmaali karaa iyadoo dooddu tahay in la filaayo.

expect_tty [expect_args]
waa sida filitaanka laakiin wuxuu akhriyaa jilayaasha / googo / tty (tus. Marka la aqbalo, akhrinta waxaa lagu sameeyaa qaab la kariyey. Sidaa darteed, khadadka waa in ay soo afjaraan dib u noqoshada si ay u arkaan. Tani waxaa laga yaabaa in lagu bedelo adoo adeegsanaya (fiiri amarka hoosta hoose).

expect_user [expect_args]
waa sida filitaanka laakiin wuxuu akhriyaa jilayaasha stdin (ie, foorjarro laga isticmaalo user). Marka la aqbalo, akhrinta waxaa lagu sameeyaa qaab la kariyey. Sidaa darteed, khadadka waa in ay soo afjaraan dib u noqoshada si ay u arkaan. Tani waxaa laga yaabaa in lagu bedelo adoo adeegsanaya (fiiri amarka hoosta hoose).

fargeeto ah
abuurtaa nidaam cusub. Nidaamka cusubi waa nuqul sax ah oo ku saabsan hannaanka mustaqbalka. Guusha, fowdada waxay ku soo noqotaa 0 illaa habka cusub (ilmaha) oo dib u soo celinta hanaanka habsocodka geedi socodka ubadka habka waalidka. Fashilka (khasaare la'aanta la'aanta khayraad la'aanta, tusaale ahaan, booska kala-beddelashada, xasuusta), foostada -1-ka noqoshada geeddi-socodka waalidka, oo aan jirin nidaam ilmo.

Nidaamka feylalka ka baxsan iyada oo loo marayo amarka ka bixitaanka , sida nidaamka asalka ah . Hannaanka loo yaqaan 'Forked' ayaa loo oggol yahay inay u qoraan faylasha qoraalka. Haddii aadan joojin boobka ama gundhigga inta badan hababka, natiijadu waxay noqon kartaa jahwareer.

Qaar ka mid ah hirgalinta qaar ayaa laga yaabaa inay jahwareeriyaan akhristayaal badan iyo qorayaal, xitaa si ku-meel-gaar ah. Sidaa daraadeed, waa mid ugu badbaado foosto ka hor intaan la isku deynin.

isdhex gala [string1 body1] ... [stringn [bodyn]]
waxay ku siinaysaa xakamaynta nidaamka hadda la isticmaalo, sidaas daraadeed waa in fariimaha loo gudbiyo habraaca hadda jira, waxaana la soo celiyaa habka iyo nidaamka hadda jira.

Laba-jajab jirka ah ayaa lagu tilmaami karaa doodo, taas oo kiiskana la fulinayo marka la galo xarfo u dhigma. (Marka laysku daro, nambarka looma diro nidaamka xaadirka ah .) Taliyaha turjumaanka ayaa la aaminsan yahay, haddii jidhka ugu dambeeya maqan yahay.

Haddii doodaha guud ee wadaxaajoodka wadajirku u baahan yahay in ka badan hal xariiq, dhammaan doodaha waxaa laga yaabaa inay noqdaan mid "si siman" loo dhigo si looga fogaado joojinta xariiq kasta oo leh lakab. Xaaladdan oo kale, beddelka caadiga ah ee Tcl ayaa dhici doona inkasta oo jeebka.

Tusaale ahaan, taliska soo socda wuxuu la dhaqmaa lamaanaha soo socda ee lagu qeexay: Marka ^ Z la riixo, rajada ayaa la joojinayaa. (Calanka celceliska dib ayuu u soo celiyaa qaababka kumbuyuutarka.) Marka ^ A lagu cadaadiyo, isticmaaluhu wuxuu arkayaa "waxaad ku qortay xukun-A" oo geeddi-socodka waxaa loo dirayaa ^ A. Marka $ la cadaadiyo, isticmaaluhu wuxuu arkayaa taariikhda. Marka ^ C la cadaadiyo, Ka bixi filashooyinka. Haddii "foo" la galo, isticmaaluhu wuxuu arkayaa "bar". Marka ~ la cadaadiyo, turjumaanka filitaanka wuxuu wadaa is dhexgalka.

dhigay CTRLZ \ 032 isdhexgalaan {-reset $ CTRLZ {exec kill -STOP [pid]} 001 {send_user "waxaad ku qortay xakameyn-A \ n"; u dir "\ 001"} $ {send_user "Taariikhda waa saacad [saacad wareega]]."} \ 003 exit foo {send_user "bar"} ~~}

Laba-xaglood oo isku dhejisan, ayaa xarfaha loo dhigaa sida ay isugu xigaan doodaha. Noocyada qayb ahaan ciyaarta looma diro nidaamka xaadirka ah ee qiyaasta inta soo hartay. Haddii xarfaha markaa la galo si aan mar dambe loo badin karin ciyaarta, kaliya qeyb ka mid ah xarigga ayaa loo diri doonaa nidaamka aan suurogal ahayn in ay bilaabaan ciyaar kale. Sidaa daraadeed, xarriiqyada ka soo baxa ciyaaraha qaybta ah ayaa la ciyaari kara, hadday asalka asaliga ah ee isku dayaya inuu ciyaaraha ku guuleysto kama dambeysta.

Marka la eego, isku-beddelka xariiqa waa sax oo aan lahayn kaararka dukumintiga (Taas bedelkeeda, amarka la filayo wuxuu isticmaalaa naqshadaha qaabka caadiga ah.) Calaamadda -exaha waxaa loo isticmaali karaa si loo ilaaliyo qaababka laga yaabo inay si kale u dhigaan calanka isdhexgalka ee ka shaqeeya sidaas. Qaab kasta oo ka bilaabma "-" waa in la ilaaliyaa habkan. (Dhammaan xarfaha laga bilaabo "-" waxaa loo hayaa ikhtiyaar mustaqbalka ah.)

Kaluunka -reebka ayaa xarriiqaya xadhigga si loo tarjumo qaabka loo yaqaan "regexp-style style". Xaaladdan, bedelaadaha isbarbar dhig waxaa lagu keydiyaa interact_out variable sida la mid ah habka filayo in ay dukaanka ku duubto qiimaha expect_out . Calanka calaamadaha ayaa sidoo kale la mid ah taageerada.

Nidaamku wuxuu soo bandhigayaa ficil lagu fulinayo dhammaadka faylka. Nooc ka mid ah xayndaabka xayndaabka ah ayaa sidoo kale laga yaabaa inay raacaan calanka -qorxeedka oo kiiskuna la mid yahay haddii eof la ogaado halka qoritaanka wax soo saaro. Ficillada eof ee ugu horeysa waa "soo noqoshada", si markaa isdhexgalka ay si fudud ugu soo noqdaan EOF.

Qaab-dhismeedka wakhtigu wuxuu soo bandhigayaa wakhti (wakhti dambe) iyo ficil la fulinayo ka dib markaan mucjisooyin la akhrinin waqti wakhti ah. Nidaamka jadwalku wuxuu khuseeyaa habka ugu dambeeya ee loo cayimay. Ma jiro wakhti go'an. Wakhtiga "timeout" (oo loo isticmaalo amarka sugitaanka) wax saameyn ah kuma yeesho waqtigan.

Tusaale ahaan, bayaankan soo socda ayaa loo isticmaali karaa dadka isticmaala autologka kuwaas oo aan wax ku qorin saacad laakiin weli wata fariimooyin nidaamyo isdaba joog ah:

isdhexgalka - $ user_spawn_id timeout 3600 soo celinta - $ $ spawn_id

Haddii qaabku yahay ereyga muhiimka ah ee null , iyo nulls waa la oggol yahay (iyada oo loo marayo qandaraaska remove_nulls ), jirka ayaa loo hirgeliyaa haddii hal ASCII 0 la isku habeeyo. Suurtagal ma ahan in lagu barbardhigo 0 byte iyadoo la marayo glob ama regexp qaababka.

Ka dhigista nidaamka calanka-is- qori waxay keenaysaa isbeddelka interact_out (spawn_id) in la dhigo spawn_id kaasoo u dhigma qaabka (ama eof).

Dhaqdhaqaaqyada sida jebinta oo sii wadaan sababaha u xakameynaya dhismayaasha (ie, loogu talagalay ) inay ku dhaqmaan sida caadiga ah. Si kastaba ha noqotee, soo noqoshada waxay u dhexeeyso si ay ugu noqoto qofka soo waca, halka isdhexgalka ay sababaan isdhexgalka si ay u soo celiyaan baaqooda . Tusaale ahaan, haddii "proc foo" la yiraahdo isdhexgalin ka dib marka la fuliyo ficilka, foo dib ayuu u soo noqonayaa. (Tani waxay ka dhigan tahay haddii dhexdhexaadinta ay kuugu yeeraan turjubaan dhexdhexaadin ah oo soo noqnoqonaya soo celinta waxay keeni doontaa isdhexgalka in uu sii wado, halka isdhexgalka uu sababi doono isdhexgalka inuu ku soo noqdo qofka soo wacaya.)

Inta lagu jiro isdhexgalka , habka qadiimka ah ayaa loo isticmaalaa si dhammaan jilayaasha loo gudbiyo nidaamka xaadirka ah . Haddii nidaamka xaadirka ah uusan qabin calaamadaha kontoroolka shaqada, waxay joojin doontaa haddii loo soo diro calaamadda joogsiga (default default ^ Z). Si aad u soo noqoto, u dir calaamad sii socota (sida "dil" -CONT "). Haddii aad runtii rabto in SIGSTOP u dirto nidaamka noocan oo kale ah (by ^ Z), u fiirso cshaweynta csh marka hore kadibna barnaamijkaaga. Dhinaca kale, haddii aad rabto inaad dirto SIGSTOP si aad u sugto, turjubaan ugu yeerka hore (laga yaabee adigoo isticmaalaya dabeecad baxsi), kadibna riix ^ ^.

Laba-qaab-jireed ayaa loo isticmaali karaa sidii loo ilaalin lahaa turjubaanka iyo fulinta amarrada isdhexgalka. Hannaanka gawaarida ee hore ayaa loo isticmaalaa inta jidhka lammaanaha jidhka lagu fulinayo.

Xawaaraha, ficilada fulinta hab qunyar-celin ah oo aan caadi ahayn. Calanka celceliska ayaa dib u hagaajinaya terminal si qaabka uu u lahaa ka hor inta aan la isdhexadin (la gareeyay , qaab la kariyey). Ogsoonow in jilayaasha lagu soo galo marka habka la bedelay laga yaabo in la lumiyo (mucjiso nasiib darro ah darawalka kumbuyuutarka ee nidaamyada qaarkood). Sababta kaliya ee isticmaalka -reset waa haddii ficilkaagu ku xiran yahay habka loo kariyay habka la kariyey.

Calanka-- so wuxuu soo diraa jilayaal u dhigma qaabka soo socdo ee geeddi-socodka taas oo abuuray dabeecad kasta. Tani waxay noqon kartaa mid faa'iido leh marka uu isticmaaluhu ubaahan yahay inuu arko jawaab celinta qaababka qayb ahaan loo yaqaan.

Haddii qaabka la socdo, laakiin ugu dambeyntii ku guuldareysto in la ciyaaro, jilayaasha waxaa loo diraa geedi socodka mashruuca . Haddii geeddi-socodka la taabanayo ay dib u eegto, user ayaa arki doona jilayaasha laba jeer. -cho waxaa laga yaabaa in ay ku habboon tahay xaaladaha uusan isticmaaluhu u badneyn in uu buuxiyo qaabka. Tusaale ahaan, qodobadan soo socota waxay ka imanayaan rftp, script-recursive-ftp, halkaas oo user uu kuugu soo qoray si aad u gashid ~, p, ama ~ l, si aad u hesho, qorto, ama liiska diiwaanka ku jira. Kuwani aad bay uga fog yihiin amarrada ftp-ga caadiga ah, in aan loo baahnayn in calaamad u ahaato "user-ka" oo ay raacdo wax kasta oo kale, marka laga reebo si khalad ah, marka laga hadlayo, waxay u badan tahay inay iska indho-tiraan natiijada.

Isdhex gashan {-Somo ~ g {getcurdirectory 1} -Shoose ~ l {getcurdirectory 0} -khtare ~ p {putcurdirectory}}

Calanka ' -nobuffer wuxuu soo diraa jilayaal u dhigma qaabka soo socda ee habka wax soo saarka sida rikoodhada loo akhriyo.

Tani waa faa'iido leh markaad rabto inaad barnaamijka u oggolaato in dib loo eego qaabka. Tusaale ahaan, kuwan soo socda ayaa loo isticmaali karaa si loo kormeero meesha qofku garaacayo (modem Hayes-style). Markasta "atd" waxaa loo arkaa in qoraagu qorayo inta ka hadhay.

Processnn {} {interact -nobuffer -re "(. *) \ r" soo celinta waxay ku dhigtaa $ log "[qaabka saacadaha [saacadaha sanadaha]]: wacey $ interact_out (1, string)"} isdhexgalka -nobuffer "atd" lognumber

Inta lagu jiro isdhexgalka , isticmaalka hore ee log_user waa la iska indhatiray. Gaar ahaan, isdhexgalka ayaa ku qasbi doona in la soo saaro si loo dhajiyo (loo diro wax soo saarka caadiga ah) tanoo loo maleynayo in isticmaale uusan rabin in uu is dhex galo indho la'aan.

Calanku-ku- oolku wuxuu keenaa wax-soo-saarka jirka ee muhiimka ah si loo isticmaalo soo saarida geeddi-socodka hadda. Tani waxay noqon kartaa mid waxtar leh, tusaale ahaan, marka aad la macaamilayso martigaliyeyaasha soo diraya jilayaasha aan loo baahnayn inta lagu jiro fadhiga telnetka.

Marka la isku dhaafo, isdhexgalka waxay filanaysaa in isticmaalaha uu qoro stdin iyo akhriska qoraalka ee nidaamka sugitaanka laftiisa. Calaamadda -u ("user") wuxuu isku xiraa adeegsade ahaan sida habka lagu magacaabo dooddeeda (taas oo ah inay ahaato mid id ah).

Tani waxay u oggolaaneysaa laba geedi socod oo aan isku xirneyn in lala wadaago iyada oo aan la isticmaalin khadad cad. Si loo caawiyo ka hortagga, Ka filo ogaanshaha baaritaanka marwalba inuu tago stderr (ama stdout qormo gaar ah iyo macluumaadka khaldan). Sababtaas awgeed, taliyaha turjubaanka wuxuu akhrin doonaa interactively stdin.

Tusaale ahaan, qaybta soo socota waxay abuureysaa geeddi-socodka login. Kadibna waxay ku garaacdaa user (aan la soo bandhigin), ugu dambeyntii isku xiro labada labada. Dabcan, habab kasta waa la bedeli karaa si aad u galiso. Tusaale ahaan, tusaale ahaan, waxay u oggolaanaysaa in isticmaalaha uu shaqeeyo isagoo aan bixin xisaab iyo lambar.

xawaaraha qadar-geliska ah ee lagu galo $ login

Si aad u soo dirto wax soo saarka geedi socodka badan, waxaad taxdaa liisaska idada ee idil ee horay loogu soo rogay calanka. Qodobbada loogu talagalay koox ka mid ah maqaayada wax soo saarka ah waxaa laga yaabaa in lagu go'aamiyo liistada liiska soo- saarka ee lagu hormariyay calanka. (Labada tixraac iyo faahfaahin ayaa laga yaabaa in ay liistada isku midka yihiin calaamadda -i ee amarka la filayo , marka laga reebo in any_spawn_id aysan macquul ahayn isdhexgalka .) Dhamaan calamadaha iyo calaamadaha soo socda (ama qaababka) waxay ku dabaqayaan taladan tan kale - calanka la soo rogo. Haddii aan la ogaanin , -qeybin wuxuu ka tarjumayaa "farriin $ user_spawn_id -output". (Sidoo kale, qaababka aan haysanin .) Haddii hal- saaro la cayimay, waxay ku dhaafeysaa $ user_spawn_id. Haddii la- tilmaam labaad-la cayimay, waxay ka badaneysaa $ spawn_id. Calaamado dheeri ah oo qeexaya ayaa laga yaabaa in la cayimo .

Labada habab ee loo adeegsanayo hannaanka la geliyay waxay ku xiran yihiin in ay soo saaraan waxyaalladoodii loo cayimay sida $ spawn_id iyo $ user_spawn_id (dib u eeg). Haddii calanka-ka-soo- baxu uu ka muuqdo maaha calan- dalxiis , xarfaha laga bilaabo geeddi-socodkaas ayaa la tuurayaa.

Calanka -i wuxuu soo bandhigayaa bedelka spawn_id ee hadda jira marka aan la isticmaalin calaamad kale ama qaylo-xirmo . Calaamadda A-ka waxay muujineysaa calanka-a.

Waa suurtagal in la beddelo hababka loo dhexgalo iyadoo la adeegsanayo idman aan toos ahayn. (Waraaqaha xayiraadaha aan tooska ahayn waxaa lagu sharaxay qaybta ku jirta amarka la sugayo.) Codsiyada aan tooska ahayn ee la yiraahdo waxaa laga yaabaa in lagu sheego -i, -u, -input, ama calanka-dalbashada.

turjumaan [args]
wuxuu sababayaa isticmaalaha in uu si dhexdhexaad ah u keeno amarrada la filayo iyo Tcl. Natiijada amar kasta ayaa la daabacaa.

Dhaqdhaqaaqyada sida jebinta oo sii wadaan sababaha u xakameynaya dhismayaasha (ie, loogu talagalay ) inay ku dhaqmaan sida caadiga ah. Si kastaba ha noqotee, dib u noqoshada turjubaanku wuxuu ku soo laabanayaa qofka soo waca, halka is- dhexgalka uu keeno turjumaan si uu ugu soo celiyo soo-wacaha. Tusaale ahaan, haddii "proc foo" lagu magacaabo turjumaan kaas oo markaa fulin lahaa ficilka, foo soo celin lahaa. Amar kasta oo kale ayaa keena turjumaan si uu u sii wado keenista amarada cusub.

Taasi waxay ku jirta laba qaybood. Kombiyuutarka ugu horeeya wuxuu qeexayaa qoto-dheeraynta qiimeynta (ie, imisa jeer ayaa loo yaqaan Tcl_Eval). Qodobbada labaad waa tilmaanta taariikhda Tcl. Xaqiijiyaha waxaa lagu qeexi karaa qeexida nidaamka loo yaqaan "prompt1" kaasoo qiimaha soo noqoshada noqda isla markiiba. Haddii bayaanku leeyahay furitaan furan, fariimo, fariimo, ama qalab, isla markiiba (ansax ah "+>") ayaa la soo saarey markii la cusbooneysiiyey. Dheeraadka labaad waxaa lagu magacaabi karaa qeexida nidaamka loo yaqaan "prompt2".

Inta lagu jiro turjumaanka , qaabka la kariyey ayaa loo isticmaalaa, xitaa haddii qofka soo wicida uu isticmaalayo habdhaqameed.

Haddii stdin xiro, turjumaanku wuu soo laabanayaa haddii aan calanka la isticmaalin, markaa arinta muranka dambe ayaa la soo weeraray.

log_file [args] [[-a] faylka]
Haddii faylka la bixiyay, log_file wuxuu qori doonaa qoraalka casharka (laga bilaabo barta) faylka. log_file ayaa joojin doonta duubista haddii aan dood lagu bixin. Faylka horay logu xidhay waa la xidhay.

Halkii laga qaadi lahaa faylka, aqoonsiga faylka Tcl waxaa laga yaabaa in la bixiyo iyadoo la isticmaalayo calamadaha -open ama calaamadeyn. Tani waxay la mid tahay amarka qashinka . (Eeg dhoobada faahfaahin dheeraad ah.)

Xoogagga calanka -a ayaa soo saaray si ay u soo galaan taas oo lagu xakumay amarka log_user .

Marka la eego, qandaraaska log_file wuxuu ku lifaaqaa faylaladii hore ee halkii ay ka gaabin lahaayeen, si loogu sahlo inuu awood u yeesho inuu gooyo gaaban iyo dhowr jeer hal kulan. Si aad u gooyo faylasha, isticmaal calanka la- rogo .

Calanka-- fo waxay keenaysaa log_file si ay u soo celiyaan sharaxaad ka mid ah doodihii ugu danbeeyay ee aan la bixin.

log_user -info | 0 | 1
Marka la eego, wadahadalka diritaanka / filitaanka waxaa lagu kaydiyaa stdout (iyo logfile haddii furan yahay). Diiwaangelinta stdout waa curyaan ah amar "log_user 0" oo dib u celi "log_user 1". Gelitaanka qoraalka waa mid aan isbeddelin.

Calanka-- fo wuxuu keenaa log_user si uu u soo celiyo sharaxaad ku saabsan doodihii ugu danbeeyay ee aan la helin.

match_max [-d] [-i spawn_id] [size]
wuxuu qeexayaa xajmiga buundada (in bytes) gudaha lagu isticmaalo iyadoo la filayo . Iyadoo aan jirin cabir weyn , tirada cabirka hadda waa la soo celiyaa.

Iyada oo calanka -deed , cabbirka qaddarka ayaa la dhigay. (Qodobka ugu horreeya waa 2000.) Iyada oo calanka -i , cabbirka ayaa loo qoondeeyay magaca caanaha lagu magacaabay, haddii kale waxaa la dejiyaa habka socda.

baqshiish [- # spawn_id] [- # spawn_id] [...] barnaamij [args]
fulinayaan "barnaamijka argfixinta" meeshii laga rabay barnaamijka la filayo , ee joojiya. Argaggixisada ciriiriga ah ayaa xooga ku xiraysa magaca hore ee magaca codka ah sida haddii ay ahayd qolof gaaban. Dhamaan spawn_ids way xiranyihiin marka laga reebo kuwa loo yaqaan doodaha. Kuwani waxaa lagu duuduubay aqoonsiga faylka lagu magacaabay.

Spawn_ids ayaa loo duuduubay si loo aqoonsado aqoonsiga barnaamijka cusub si loo dhaxlo. Tusaale ahaan, khadka soo socdaa wuxuu ku shaqeeyaa chess wuxuuna u oggol yahay in la xakameeyo nidaamka xaadirka ah - dheh, majaajiliiste chess.

baqshiish -0 $ spawn_id -1 $ spawn_id -2 $ chess spawn_id

Tani waxay ka fiican tahay "isdhexgalka -u", hase yeeshee, waxay ku allabaryeysaa kartida waxqabadka barnaamijka isdhexgalka tan iyo markii geeddi-socodka sugitaanka uusan sii jirayn.

Ogsoonow in aan jirin gawaarid xakamayn ah. Sidaa darteed, haddii aad joojiso ama aad dib udhigto fikradaha caadiga ah, barnaamijyada gacanta ku haya shaqada (muraayadaha, galka, iwm.) Ma shaqayn doonaan si sax ah.

udhaxaad [-d] [-i spawn_id] [qiimaha]
wuxuu qeexayaa haddii midab takoorka la keydiyo ama laga saaro wax soo saarka geeddi-socodka. Haddii qiimaha eber yahay, isbeddelka waa la jarjaray, haddii kale lama jarayo. Iyadoo aan jirin dood qiime , qiimaha hadda waa la soo celiyaa.

Iyada oo calanka -dad , qiimaha caadiga ah ee siman ayaa la dejiyaa. (Qodobka ugu horreeya waa 1, ie, midabtakoorka aan la jarin.) Iyada oo calanka -i , qiimaha isbeddelka ayaa loo dejiyey magaca loo yaqaan magaca cadawga, haddii kale waxaa loo dejiyaa geedi socodka hadda.

remove_nulls [-d] [-i spawn_id] [qiimaha]
wuxuu qeexayaa haddii nulls laga hayo ama laga saaro wax soo saarka geeddi-socodka ku-soo-baxa ka hor inta aan la helin isku-beddelid ama kaydinta bedelka rajada ama qorshaha interact_out . Haddii qiimaha 1, nulls waa la saaraa. Haddii qiimaha 0 yahay, nulls lama saaro. Iyadoo aan jirin dood qiime , qiimaha hadda waa la soo celiyaa.

Iyada oo calanka -da , qiimaha caadiga ah ayaa la dejiyaa. (Qodobka ugu horreeya waa 1, ie, nulls waa la saaraa.) Iyada oo calanka -i , qiimaha ayaa lagu qeexay magaca caansaanka magaciisa lagu magacaabo, haddii kale waxaa loo qoondeeyay habka hadda jira.

Hadday noqoto mid aan laga saarin ama la diidey, Waardiyeyntu waxay diiwaangelin doontaa bay'ada null loo yaqaan "log and stdout".

u dir xayndaabka [-flags]
Waxay u dirtaa xariijin habka socda. Tusaale ahaan, amarka

dir "hello dunida \"

wuxuu soo diraa jilayaasha, helloworld ilaa nidaamka xaadirka ah . (Tcl waxaa ku jira amar nooc ah oo la mid ah ( qaab loo yaqaan) taas oo abuuri karta xarriiqimo adag oo adag.)

Calaamadaha si dhakhso ah ayaa loo soo diraa inkastoo barnaamijyada la adeegsanayo xarafka la isku dhajiyay aysan akhrin karin jilayaasha illaa laga gaaro dabeecada soo noqota. Ciladda soo noqoshada waxaa lagu tilmaamay "\ r \".

Kaluunka - calanka ayaa xooga saaraya doodda soo socota in lagu turjumo sida xarig halkii calanka. Qodob kasta waxaa ka horeeya "-" haddii ay dhab ahaantii u muuqato calan. Tani waxay bixisaa hab lagu kalsoonaan karo si loo cayimo xarriiqda isbeddelka iyada oo aan la isa saarin kuwa ay si khalad ah u egyihiin calanka. (Dhammaan xarfaha laga bilaabo "-" waxaa loo hayaa ikhtiyaar mustaqbalka ah.)

Xayaysiiska -i wuxuu ku dhawaaqayaa in xarafka loo diro magaca spawn_id. Haddii spawn_id uu yahay user_spawn_id , iyo terminalku waa qaab casri ah, xarumaha cusub ee xarfaha ayaa loo tarjumay dib u soo noqoshada-cusub oo cusub si ay u muuqdaan sida ay u muuqato inay ahaato qaabka loo yaqaan "terminal". Calanka- sheyga ayaa diidaya tarjumadan.

Calanka calaamaduhu wuxuu soo diraa jilayaasha aan caadiga ahayn (0 bytes). Marka la diido, hal null ayaa la soo diraa. Kombiyu wuxuu raaci karaa -null si uu u muujiyo inta jeer ee la diro.

Calanka jimicsiga wuxuu abuuraa xaalad nasasho. Tani waxay macno ka dhigeysaa haddii idanka dhirbaaxu uu tilmaamayo qalab tty ah oo laga furay "dhoobada". Haddii aad ku dhufatey geeddi-socodka sida caarada, waa inaad isticmaashaa heshiiska caarada ah ee loogu talagalay abuuritaanka nasasho.

Qalabka calanka-- sixda ayaa loo soo diraa "si tartiib ah", markaa ka fogow xaaladda guud ee ah in kombiyuutarku ka soo baxaan xarig aan ku habbooneyn oo loogu talagalay dad aan waligood dib u dhicin. Soo saaridaan waxaa lagu xakameynayaa qiimaha variable "send_slow" kaas oo qaata laba liis oo liis ah. Qaybta ugu horeysa waa mid isku dhafan oo qeexaya tirada bytka si ay u soo diraan atomically. Nooca labaad waa lambar dhab ah oo qeexaya tirada ilbiriqsiyada ay tahay in atomikiska uu soo diro waa in la kala tagaa. Tusaale ahaan, "set_slow {10,001}" waxay ku qasbi karaan "diri-dir" si ay ugu diraan xarigyo leh 1 millisecond inta u dhaxaysa 10 kasta oo loo soo diray.

Xoogagga calanka -h ayaa loo soo diraa (in yar) sida qof bini aadam ah. Dib-u-eegista aadanaha ayaa u muuqda inta u dhexeysa jilayaasha. (Algorithm waxay ku salaysan tahay qaybinta Weibull, iyada oo wax laga beddelayo ku habboon arjigan gaarka ah.) Soo saaridaan waxaa lagu xakameynayaa qiimaha doorsoomaha "dir_human" kaas oo qaata shan liis oo liiska. Labada qaybood ee ugu horeeya waa celcelis ahaan dhexdhexaad ah ee jilayaasha sanadaha. Marka hore waxaa loo isticmaalaa default. Midda labaad waxaa loo adeegsadaa dhamaadka ereyga, si loo simo duruufaha aan macquulka ahayn ee marmarka qaarkood ku dhaca marxaladan. Qodobka seddexaad waa cabbir isbeddel ah halka1.1 uu yahay mid isbedbeddelaya, 1 waa mid si macquul ah u beddeli kara, 10na waa mid gaabis ah. Xaglaha waa 0 si aad u gaabisaan. Labadii lambar ee ugu dambeeyay waxay yihiin, siday u kala horreeyaan, ugu yaraan iyo waqtiga ugu badnaan. Ugu yaraan iyo ugu badnaan waxaa loo isticmaalaa "final" iyo "clip" waqtiga ugu dambeeya. Celceliska kama dambaysta ah wuu ka duwanaan karaa celcelis ahaan tan haddii ugu yaraan iyo ugu badnaan qaybaarka ku filan.

Tusaale ahaan, amarka soo socda wuxuu soo koobayaa qori dhakhso ah oo joogto ah:

Sameey_human {.1 .3 1 .05 2} diraa -h "waan gaajoonayaa, haddaba qado."

halka kuwa soo socda ay noqon karaan kuwo ku haboon ka dib marka la soo dhejiyo:

daji_human {.4 .4 .2 .5}} diri -h "Habeen wanaagsan oo xaflad casho ah!"

Ogow in khaladaadka aan loo simanayn, inkasta oo aad sameyn kartid xaaladaha saxitaanka qalad adoo raacaya khaladaadka iyo saxitaanka doodda dirista.

Calaamadaha lagu soo diro jilayaasha null, si ay u soo diraan fasaxyada, inay ku qasbaan soo-saar tartiib tartiib ah iyo soo saarista bini-aadanka ayaa ah kuwo isku mid ah. Kaliya hal kii la soo dhaafay ayaa la isticmaali doonaa. Waxaa intaa dheer, dood muran ah laguma sheegi karo calaamadaha loogu diro jilicsanaanta ama jebinta.

Waa fikrad wanaagsan inaad horey u soo dirto nidaamka iyadoo la rajeynayo . Fikirka ayaa sugi doona habka uu ku bilaabmayo, halka uu diri karin. Gaar ahaan, haddii diristii ugu horreysay ay dhamaystirto ka hor intaan geedi socodku bilaabmin, waxaad ku jirtaa khatarta ah in xogtaada la iska indho tiray. Xaaladaha barnaamijyada isdhexgalka oo aan si degdeg ah u bixin, waxaad horay u soo diri kartaa dib u dhigitaan sida:

# Si looga fogaado bixinta koodhiyeyaashu waxay ku talinayaan sida loo jebiyo, # nidaamkani ma doonayo in lagu daro ereyga dibadda. # Ku sug 5 ilbiriqsi si aad u dhameysatid si aad u dhameysataan telnet telnet very.secure.gov sleeping 5 u dir lambar sir ah

exp_send waa magac kale oo loo diro. Haddii aad isticmaalayso Expectk ama wax kale oo ah kala duwanaansho ee Ka filitaanka deegaanka Tk, diritaanka waxaa lagu qeexay Tk si ujeedo oo ka duwan. Exp_send waxaa loo bixiyaa si loo helo isku xirnaanta deegaanka. Kuwa kale ee la midka ah ayaa loo bixiyaa amarrada kale ee sugitaanka ee kale.

Send_error [-flags] xaraf
waa sida diritaanka , marka laga reebo in wax soo saarka loo diro stderr halkii uu ka ahaan lahaa nidaamka hadda jira.

Send_log [-] string
waa sida diritaanka , marka laga reebo in xariggu kaliya loo diro faylka log (fiiri log_file .) Doodda ayaa la iska indhatiray haddii aan faylka logu furmin.

Send_tty [-flags] string
waa sida diritaanka , marka laga reebo in wax soo saarka loo diro / dev / tty halkii ay ku socoto geedi socodka hadda.

Send_user [-flags] xaraf
waa sida diristu , marka laga reebo in wax soo saarka loo diro stdout halkii laga qaban lahaa nidaamka xaadirka ah .

saacado hurdo
waxay keenaysaa in qoraagu uu seexdo lambarka ilbiriqsiyada. Siddeedaad waxay noqon kartaa lambarka jajab tobanle. Kala jarashada (iyo dhacdooyinka Tk haddii aad isticmaaleysid Expectk) ayaa la farsameeyaa inta aad sugeyso hurdo.

barnaamijka xawaashka [args] [args]
wuxuu abuuraa geeddi-socod cusub oo soconaya "barnaamij argagax". Qaybteeda, stdout iyo stderr waxay ku xiran yihiin filitaanka, si ay u akhristaan ​​oo u qoraan amarrada kale ee la sugayo . Xidhiidhka waa la jajabiyaa ama dhawra haddii nidaamku uu xiro mid ka mid ah aqoonsiyada faylka.

Marka geedi socodka lagu bilaabo bareeso , variable spawn_id ayaa loo qoondeeyey sharaxaad ku saabsan habkaas . Habka lagu sharraxay spawn_id waxaa loo tixgeliyaa " nidaamka hadda ". Spawn_id ayaa laga yaabaa in la akhriyo ama qoro, iyadoo la adeegsanayo kantaroolka shaqada.

user_spawn_id waa isbedel caalami ah oo ay ku jirto sharaxaad la xiriirta isticmaalaha. Tusaale ahaan, marka spawn_id loo qoondeeyo qiimahaan, waxaad filaysaa inuu u dhaqmo sidii rajeynayo .

. Error_spawn_id waa isbedel caalami ah oo ay ku jiraan sharaxaad kaasi oo loola jeedo qaladka caadiga ah. Tusaale ahaan, marka spawn_id loo qoondeeyo qiime ahaan, u dir dhaqanka sida dirista .

tty_spawn_id waa isbedel caalami ah oo ku jira sharaxaad kaasi oo loola jeedo / dev / tty. Haddii / dev / tty uusan jirin (sida qoraalka, at, ama qoraalka batch), tty_spawn_id lama qeexayo. Tan waxaa laga yaabaa in lagu tijaabiyo sida:

{{info info tty_spawn_id]} {# / dev / tty exists} else {# / dev / tty kuma jiro # laga yaabo in uu gaaban yahay, sheyga, ama qoraalka}

xawaashka ayaa soo celinaya id. Haddii aan la hirgelin nidaam , 0 ayaa la soo celiyaa. Spawn_out variable (addoon, magac) ayaa loo qoondeeyey magaca qalabka adeega addoonta ah.

Markuu dhameesto, ku dhajiyo magaca codka iyo doodda. Calanka ivoowo wuxuu joojiyaa dhoobada inuu sameeyo tan.

Kalsooni -- coleedka ayaa keena soo-saaro soo-jeedin ah in loo wareejiyo geedi-socodka mashquulka ah . Tani laguma taageero dhamaan nidaamka.

Internally, buclaal wuxuu isticmaalaa pty, wuxuu u eg yahay habka isticmaalka tty ee user. Tani waa mid kale oo la bilaabay si ay dhammaan goobaha ay yihiin "nacas" (sida ku xusan cantoobada (1)). Haddii sifaha stty_init lagu qeexo, waxaa loo fasirayaa qaabka doodda caydhinta ah sida qaabka kale. Tusaale ahaan, "set stty_init raw" waxay keeni kartaa in kumbiyuutarrada kale ee la socdo si ay u bilaabaan hab qaas ah. - rikoodhaafka ayaa ku dhufanaya bilawga iyada oo ku saleysan tyaha isticmaalaha. -nottyinit wuxuu ku dhufanayaa "sane".

Caadi ahaan, dhoobada waxay qaadataa wakhti yar in la fuliyo. Haddii aad dareentid inaad isbeddel ku qaadato waqti aad u badan, waxaa laga yaabaa in ay la kulanto ptys oo la jabiyey. Tijaabooyin dhowr ah ayaa lagu wadaa ficilada si ay uga fogaadaan buuxinta geeddi-socodka qaldan. (Kuwani waxay qaataan 10 ilbiriqsi oo ah qiyaastii.) Running Expect with -d option waxay muujinaysaa haddii rajadu ay la kulanto batarado badan oo ka mid ah dawlado shisheeye ah. Haddii aanad dili karin hababka loo yaqaan "penths" kuwaas oo ku lifaaqan, keli ah oo keliya ayaa laga yaabaa in dib loo dhiso.

Haddii barnaamijka aan si guul leh looga faa'iideeysan waayo exec (2) ku guuldareysto (tusaale, marka barnaamijku aanu jirin), fariin qalad ah ayaa lagu soo celin doonaa wada-xaajoodka soo socda ama wuxuu amar ku bixinayaa sidii barnaamijku uu u ordo oo uu soo saaro farriinta khaladka ah ee soo baxay. Dabeecaddani waa natiijo dabiici ah ee hirgelinta kalluunka . Gudaha miraayad gudaha ah, ka dib markii geedi socodka dhirbaaxu uusan lahayn habka lagu la xidhiidho hannaanka asalka ah ee laga filayo marka laga reebo isgaadhsiinta adoo isticmaalaya spawn_id.

Xayiraadda alaabtu waxay keentaa doodda xigta in lagu tarjumo aqoonsiga faylka Tcl (ie, lagu soo celiyay furan .) Ka dib markaa waxaa la isticmaali karaa haddii uu ahaa geedi socodka dillaacay. (Aqoonsiga faylka waa in aan loo isticmaalin.) Tani waxay kuu ogolaanaysaa in aad u isticmaasho qalabka cayriin, faylasha, iyo dhuumaha sida geedi socodka mashquulsan adigoo isticmaalaya pty. 0 ayaa loo soo celiyaa si ay u muujiso in aysan jirin nidaam la xidhiidha. Marka la isku xiro habka la taaban karo ayaa la xidhay, sidaas oo kale waa aqoonsiga faylka Tcl. Calanka calaamad-ku- xidhnaanta ayaa la mid ah -open marka laga reebo in -waxay soo saartaa aqoonsiga faylka inuu furan yahay xitaa ka dib markii idanka la xiri jiray.

Calanka calanka ah wuxuu keenaa pty ah in la furo, laakiin ma jirto nidaam la duubay. 0 ayaa loo soo celiyaa si ay u muujiso in aysan jirin nidaam la xidhiidha. Spawn_id ayaa loo dhigay sidii caadiga ahayd.

Isbeddelka spawn_out (slave, fd) wuxuu ku qeexayaa aqoonsiga faylka ee u dhigma kan addoonta ah. Waxaa lagu xiri karaa iyada oo la adeegsanayo "isku-dhow".

Calanka calanka-magaciisu waxa uu calaamad u yahay in la iska indho-tiro geeddi-socodka mashruuca . Haddii kale, calaamadaha waxay helayaan anshaxa caadiga ah. Calaamadaha waxaa lagu magacaabaa amarka dabka , marka laga reebo in calaamad kasta ay u baahan tahay calan gooni ah.

heer sare
sababta keentay ka dib marka la soo diro bayaannada la daabaco ka hor inta aan la fulin. (Tcl ee raadinta raadinta isbeddellada.) Heerkuna wuxuu tilmaamayaa sida ugu hooseysa xadhigga codka si loo raad raaco. Tusaale ahaan, taliska soo socda wuxuu hirgelinayaa Rajo iyadoo la raadinayo heerarka 4-tii hore ee wicitaanada, laakiin aan midna ka hooseeyn.

rajo -C "strace 4" script.exp

Calanka-- fo waxay keeneysaa in la soo celiyo sharaxaad ku saabsan doodaha ugu dambeeyay ee aan la isticmaalin.

Argagax leh
isbeddelaya qaabka kumbuyuutarka si la mid ah amarka xawaaraha dibadda.

Marka la eego, koontaroolidda kontoroolka ayaa la heli karaa. Meelaha kale ee la heli karo waxaa lagu heli karaa iyadoo lagu lifaaqayo "Codsiyada xaalada waxay ku soo celineysaa amarka natiijada amarka haddii aan sharci la codsan oo la helayo gawaarida xakamaynta, xaaladda hore ee sifaha qallalan iyo qoraallada ayaa lagu soo celiyaa foom kaas oo dambe isticmaalka amarka.

Tusaale ahaan, muranada qadiimka ah ama la kariyay waxay ku dhejinayaan gawaarida qaabka cayriinka. Doodda - waa la kariyay ama la kariyey qaboojiyaha u dhig qaabka la kariyey. Doodda codka iyo echo- ga waxay u geyneysaa terminal si ay uhesho qaabka codka ee loo yaqaan 'echo and noecho'.

Tusaalahan soo socdaa waxay muujinayaan sida si ku-meel-gaadh ah looga dhigo codsiyada. Tani waxaa loo isticmaali karaa qoraallo kale oo toos ah oo toos ah si looga fogaado in lagu galo furaha ereyada. (Fiiri falanqayn dheeraad ah tan oo hoos timaada HALISTA HUB).

stty -echo send_user "Password:" expect_user -re "(. *) \ n" Sameey sirta $ expect_out (1, string) stty echo

nidaamka argf
wuxuu siinayaa argsiyo sh (1) sidii talobixin, sida haddii loo qorey amar ka yimid terminal. Ka filan inaad sugto ilaa inta qolofku dhammaado. Xaaladda dib u soo noqoshada sh ayaa la qabtaa si la mid ah in exec ay wax ka qabato xaaladdeeda soo noqoshada.

Marka loo eego exec oo ah casriyeeyaha stdin iyo stdout qoraalka, nidaamku ma sameeyo wax dib u habeyn ah (oo aan ahayn tilmaanta laftirka laftiisa). Sidaa darteed, waxaa suurtogal ah in la isticmaalo barnaamijyo si toos ah ugala hadli doona / ubadka / tty. Sababtaas awgeed, natiijooyinka nidaamka lama diiwaangeliyo qoraalka.

timestamp [args]
waxay ku soo noqotaa timestamp. Iyadoo aan dood lahayn, tirada ilbiriqsiyo tan iyo xilligaa soo noqda.

Calanka fulatka wuxuu soo bandhigaa xaraf la soo celiyo laakiin la bedelay sida waafaqsan xeerarka POSIX ee loogu talagalay strftime. Tusaale ahaan% a waxaa lagu bedelay magaca maalinlaha ah ee la soo gaabiyey (ie, sat). Kuwa kale waa:

% Magaca Isbuuc ee la soo gaabiyo% A Magaca Isbuuc buuxa%% b Magaca la soo gaabiyey ee B% B Buuxda Magaca oo dhan% c taariikhda-waqtiga sida: Wed Oct 6 11:45:56 1993% d maalinka bisha (01-31% H saac (00-23)% saacad (01-12)% j (001-366)% m bishii (01-12)% M daqiiqo (00-59)% p am ama pm% s labaad (00-61) Toddobaadkiiba (Isniin illaa 1-7, Isniin waa maalinta ugu horreysa ee usbuuca) Isbuucaan (00-53, Axadda koowaad waa maalinti ugu horeysa hal toddobaad) toddobaadkii V% (01-53, ISO 8601 style) Maalinkiiba (0- 6) Isbuucii todobaadkii (00-53, Isniinta ugu horeysa waa maalinta koowaad ee hal)% x taariikhda-waqtiga sida: Wed Oct 6 1993% X Saacad ahaan sida: 23:59:59% sanad (00-99) % Y sanadka sida: 1993% Z timezone (ama waxba haddii aan la ogaan karin) %% calaamad muujinaysa boqolkiiba

Qiyaasaha kale ee%% lama yaqaan. Jilayaasha kale ayaa lagu gudbin doonaa iyada oo aan la taaban. Kaliya C degaanka waa la taageerayaa.

Calanka- isdaba-gelinta ayaa soo bandhigaya dhowr ilbiriqsi tan iyo xilligii hore ee loo adeegsan jiray ilo laga soo xigtay. Haddii kale, wakhtiga hadda la isticmaalo.

Calanka calanka -gmt wuxuu soo saaraa timestamp si uu u adeegsado waqtiga GMT . Iyadoo aan lahayn calanka, saacada degaanka ayaa loo adeegsadaa.

[calaamadaha] calaamadaha]
waxay keenaysaa amarka la siiyay in la fuliyo ka dib marka la helo rasiidhka mid ka mid ah calaamadaha la bixiyay. Amarkan waxaa lagu fuliyaa heer caalami ah. Haddii talisku maqan yahay, talaabada calaamad ayaa la soo celiyaa. Haddii talisku yahay sig_IGN, calaamadaha waa la iska indho tirayaa. Haddii talisku yahay sig_DFL, calaamaduhu waxay keenayaan nidaamka caadiga ah. Calaamaduhu waa hal calaamad keliya ama liiska calaamadaha. Calaamaduhu waxaa lagu tilmaami karaa tiro ahaan ama calaamad ahaan sida calaamadda (3). Hooska "SIG" waa laga saari karaa.

Iyadoo aan jirin wax dood ah (ama doodda), dabin waxay ku soo celinaysaa lambarka calaamadda xukunka dabin ee hadda la fulinayo.

Calanka -code wuxuu isticmaalaa lambarka soo celinta ee amarka meel kasta oo Tcl ah oo ku saabsanaa in uu ku soo laabanayo markii amarku asal ahaan bilaabay.

Xayawaanka- dhexdhexaadku wuxuu keenaa amarka lagu qiimeeyo iyadoo la adeegsanayo turjumaan firfircoon xilliga amarka bilaabmay halkii markii dabka lagu dhawaaqay.

Tilmaamaha- magacu wuxuu keenaa amarka dabin ee lagu soo celiyo magaca calaamadda xukunka dabin ee hadda la fulinayo.

Xayiraadda-- Xax wuxuu keenaa amarka dabin ee lagu soo celiyo lambarka lambarka ugu weyn ee la samayn karo.

Tusaale ahaan, amarka "trap {send_user" Ouch! "} SIGINT" ayaa daabici doona "Ouch!" mar kasta oo isticmaaluhu uu cadaadiyo ^ C.

SIGINT (oo sida caadiga ah la soo saari karo adigoo riixaya ^ C) iyo SIGTERM sababo la filayo inay ka baxaan. Tani waxay sabab u tahay dabinka soo socda, oo abuuray qaddar marka filitaanka bilaabmayo.

ciribtirka ka soo bixidda {SIGINT SIGTINGM}

Haddii aad isticmaasho calanka -Deegaanka si aad u bilawdid debugger, SIGINT dib ayaa loo soo celinayaa si ay u bilawdo debug-bixiyaha isdhexgalka. Tani waxay sabab u tahay dabagalka soo socda:

dhuunta {exp_debug 1} SIGINT

Dareemka debugger waa la bedeli karaa adoo dejinaya bedelka bay'adda EXPECT_DEBUG_INIT amar cusub oo dabagal ah.

Dabcan, dabcan, labadaba way ka saari kartaa kuwan oo kaliya adoo ku dari doona amar ku daboolaya qoraalkaaga. Gaar ahaan, haddii aad haysato "SIGINT kaaga baxsan", tani waxay kaa saari doontaa dabka debugger. Tani waa mid waxtar leh haddii aad rabto in aad ka hortagto dadka isticmaala in ay u tagaan debugger dhammaan.

Haddii aad rabto in aad ku qeexdo dabinkaaga SIGINT laakiin weli ku dabar gareeyo khalkhalka marka uu ordayo, isticmaal:

haddii {! [exp_debug]} {qarsoodi ku dheji SIGINT}

Beddel ahaan, waxaad ku xiri kartaa qalalaasaha iyadoo la adeegsanayo calaamado kale.

dabin ma kuu oggolaanayo inaad joojiso ficilka loogu talagalay SIGALRM maxaa yeelay waxaa loo isticmaalaa gudaha gudaha si loo sugo . Amarka kala-go'yada wuxuu SIGALRM u jeedaa SIG_IGN (iska indha-tiri). Waxaad dib u soo celin kartaa tan illaa inta aad joojinayso amarrada ku xiga.

Eeg calaamadaha (3) faahfaahin dheeraad ah.

sug [args]
dib u dhigidda illaa inta geedi socodka la taaban karo (ama hannaanka hadda jira haddii aan midna la magacaabin) joojin.

sugaan inta badan waxay ku soo noqdaan liiska afarta qaybood. Daraasada ugu horreysa waa falka geeddi-socodka ee la sugayay. Qodobbada labaad waa kuwa ku haboon idada. Sadarka sadexaad waa -1-haddii qalad hanjabaad ah uu dhacay, ama 0 si kale. Haddii sadarka sadexaad ee uu yahay 0, xajinta afraad waa xaalada ay soo celisay geedi socodkii mashquuliyay. Haddii sadarka sadexaad ee uu yahay -1, qadarka afaraad waa qiimaha qalooca ee nidaamka qalliinka. Qalabka isbedelka caalamiga ah ayaa sidoo kale la dejiyaa.

Qodobbo dheeraad ah ayaa laga yaabaa inay muuqdaan dhamaadka qiimaha soo noqoshada laga bilaabo sugitaanka . Hal element oo ikhtiyaari ah ayaa tilmaamaya fasalka xogta. Xilligan, qiimaha kaliya ee suurtogalka ah ee cutubkani waa CHILDKILLED taas oo dhacda labada qiime ee soo socota waa magaca calaamadda C-style iyo sharraxaad kooban.

Calanka -i wuxuu caddeeyaa habka lagu sugayo u dhiganta magaca spawn_id magaciisa (ma aha nidaamka id). Dhexdhexaadiyaha SIGCHLD, waxaa suurtagal ah in la sugo hannaan kasta oo la taaban karo adoo adeegsanaya id ah ciridka -1.

Calanka- ogeysiinta ayaa sababa sugitaanka si dhaqso ah ugu soo noqosho iyada oo la tilmaamayo sugitaanka guusha. Marka nidaamka ka baxo (dambe), si toos ah ayuu u baaba'ayaa iyada oo aan loo baahnayn sugitaan sugitaan.

Amarka sugitaanka waxaa sidoo kale loo isticmaali karaa in la sugo hannaanka loo yaqaan 'scratch' iyadoo la adeegsanayo doodaha "-1 -1". Si ka duwan sida ay u isticmaalaan nidaamyada dillaacay, amarkani waa la fulin karaa wakhti kasta. Ma jiro wax xakameyn ah oo hannaanka laga rabo. Si kastaba ha noqotee, qiimaha soo noqoshada waxaa lagu hubin karaa nidaamka id.

LIBRARIES

Filashadu waxay si toos ah u ogaaneysaa laba maktabadood oo loogu talagalay qoraallada lagu filayo. Kuwani waxa lagu qeexay lataliyeyaasha lagu magacaabo doorsoomayaasha exp_library iyo exp_exec_library. Labadaba waxaa loola jeedaa in ay ku jiraan faylalka fayadhowrka oo isticmaali karo qoraallo kale.

exp_library waxaa ku jira faylasha madax-banaan. exp_exec_library waxaa ku jira faylasha dhismaha ku xiran. Iyada oo ku xiran nidaamkaaga, wicitaanada labada ayaa laga yaabaa inay gebi ahaanba madhan yihiin. Jiritaanka faylka $ exp_exec_library / cat-buffers wuxuu qeexayaa haddii aad / bin / bisad ku dhejisey mid default.

DIB-BIXINTA

Qeexitaan qeexan ayaa la heli karaa si qurux badan u daabacan qoraallada. Qaadashada qeexida qadarka ah ee la bixiyay Qiyaasta Kala-guurka ayaa si sax ah loogu rakibay, waxaad u isticmaali kartaa sida:

feylka -qaybinta

Tusaalooyin

Dad badani ma muuqdaan sida wax loo wada dhigi karo bogga manta . Waxaan kugu dhiirigelinayaa inaad akhrido oo aad tijaabiso tusaalooyinka ku jira liiska tusaalaha ee qaybinta rajada . Qaar ka mid ah barnaamijyada dhabta ah. Qaar kale waxay si cad u muujinayaan farsamooyinka qaarkood, dabcan, lammaane waa ciriiri degdeg ah. Faylka INSTALL wuxuu leeyahay aragti dhakhso ah oo ku saabsan barnaamijyadan.

Waraaqaha laga filayo (fiiri SEE ALSO) sidoo kale waa mid faa'iido leh. Inkasta oo waraaqaha qaarkood isticmaalaan jaantuska u dhigma qaybaha hore ee filitaanka, figradaha la socda ayaa weli ah kuwo sax ah, oo faahfaahin dheeraad ah ka geli boggan bogga.

CAVEATS

Kordhinta waxay ku wareegi kartaa magacyada taliska. Tusaale ahaan, diritaanka waxaa lagu qeexay Tk ujeedo dhammaystiran oo kala duwan. Sababtan darted, badi amarrada laga filayo waxaa sidoo kale lagu heli karaa "exp_XXXX". Talooyin iyo doorsoomayaal ka bilaabma "exp", "inter", "boodh", iyo "marxalad" aan lahayn magac kale. Isticmaal magaca magacyada la fidiyay haddii aad ubaahan tahay is-waafajintaan dhexmara deegaanka.

Filashadu waxay qaadataa aragti xor ah oo la taaban karo. Gaar ahaan, isbeddelada ay ku akhriyaan amarrada gaarka ah ee Barnaamijka Kalkaalinta waxaa laga doonayaa ugu horreyn laga bilaabo baaxadda degaanka, iyo haddii aan laga helin, aduunka oo dhan. Tusaale ahaan, tani waxay ka dhigeysaa baahida loo qabo in la dhigo "wakhtiga wakhtiga caalamiga ah" hab kasta oo aad qorto oo isticmaalaysa rajada . Dhanka kale, isbeddelada ku qoran qoraallada marwalba waxay ku yaalaan xadka degaanka (haddii aysan jirin "amar" caalami ah "). Dhibaatada ugu caansan waxay keeneysaa marka cawska lagu fuliyo nidaam. Qalitaanka ka baxsan, spawn_id mar dambe ma jirto, sidaa daraadeed geeddi-socodka dhirbaaxada ah ma aha mid la heli karo si fudud sababtoo ah xayeysiinta. Ku dar "spawn_id caalami ah" habkan oo kale.

Haddii aadan awoodin inaad awood u yeelatid kartida baahida badan (sida, nidaamkaagu ma taageerayo (BSD *. *), Poll (SVR> 2), ama wax u dhigma), filitaanka wuxuu awoodi doonaa inuu kantaroolo hal nidaam waqti. Xaaladdan, ha isku dayin inaad yeelato spawn_id , mana aha inaad fuliso geedi socodka adigoo adeegsanaayo inta geedi socodka mashruucu socdo. Intaa waxaa dheer, ma awoodi doontid inaad ka filayso hawlo badan (oo ay ka mid yihiin isticmaalaha hal sida) isla waqtigaas.

Xuduudaha Terminada waxay saameyn weyn ku yeelan karaan qoraallada. Tusaale ahaan, haddii qoraalka la qoro si uu u eego codsigeeda, waxay dhabarjebin doontaa haddii cod-celinta la damiyo. Sababtan awgeed, Awoodda sugitaanka awoodda naqshadeynta kumbuyuutarka ayaa ah mid default. Nasiib darro, tani waxay wax ka dhigi kartaa waxyaabo aan fiicnayn barnaamijyada kale. Tusaale ahaan, qolofka emacs wuxuu rabaa in uu badalo qaabka "caadiga ah": xarumaha cusub waxay ku xiran yihiin xarumaha cusub halkii ay ka soo noqon lahaayeen gawaarida cusub, iyo dib u habayntu waa naafo. Tani waxay u ogolaaneysaa qof inuu isticmaalo emacs si uu u saxo khadka taleefanka. Nasiib daro, rajo kama qabi karo tani.

Waxaad codsan kartaa in la sugo in aan dhaafin goobaha caadiga ah ee xuduudaha terminal, laakiin waa inaad markaa aad u taxadartaa markaad qoritaanka buugaag u samayso deegaannadaas. Marka laga hadlayo emacs, iska ilaali waxyaabaha ay ka midka yihiin sida dib-u-habeynta iyo is-gebogebaynta.

Amarada lagu aqbalo doodaha hal liis ah (kuwa kala duwan ee la filayo iyo isdhexgalka ) waxay isticmaalaan jaangooyo si ay u go'aamiyaan haddii liiska dhab ahaantii yahay muran ama dad badan. Muuqaalku wuxuu ku guuldareyn karaa kaliya marka kiisku dhab ahaantii matalayo hal dood oo leh tiro badan oo ku dhexjirta 'n' oo leh calaamado aan caan ahayn oo u dhexeeya iyaga. Tani waxay u muuqataa in si ku filan aan loo dabooli karin, hase yeeshee doodda "-nobrace" waxaa loo isticmaali karaa in lagu xalliyo dood hal ah oo lagu maareyn karo hal dood. Tani waxay noqon kartaa mid macquul ah in loo isticmaalo mashiinka-soo-saarka code. Sidoo kale, -badadu waxay awood u lee-dahay hal muran oo ay tahay in lagu qabto qaabab / ficillo badan.

XIRIIRADA

Waxay ahayd runtii jilicsanayd in lagu magacaabo barnaamijka "jinsiga" (midkood "Smart Exec" ama "Send-Expect"), laakiin dareen wanaagsan (ama laga yaabo inuu yahay Puritanism).

Qaar ka mid ah nidaamyada, marka qolofka la duuduubay, waxa uu ka cabanayaa inaysan awood u lahayn in uu galo tty-ka laakiin wuu socdaa. Tani macnaheedu waa nidaamkagu wuxuu leeyahay hab lagu helo helitaanka xakamaynta ee rajaynaya inuusan ogeyn. Fadlan ogow waxa ay tahay, oo u soo dir macluumaadkaan.

Ultrix 4.1 (ugu yaraan qoraalkii ugu dambeeyay ee ku xeeran halkan) wuxuu tixgeliyaa waqtiyada ka sarreeya 1000000 inay u dhigmaan 0.

Dijital UNIX 4.0A (iyo laga yaabee qaybaha kale) waxay diidi karaan in ay qoondeeyaan ptys haddii aad qeexdo gacanqaade SIGCHLD. Fiiri bogga deeqda loo bixiyo si aad u hesho macluumaad dheeraad ah.

IRIX 6.0 ma si sax ah u xakameynayo ogolaansho si ay u helaan haddii ay filanayaan isku day inaad qoondeyso cayda hore u isticmaalay qof kale, way ku guuldareysatey. U soo gudbi IRIX 6.1.

Telnet (hubin kaliya oo ka hooseysa SunOS 4.1.2) ayaa xiran haddii aan TERM la sameyn. Tani waa dhibaato marka la eego caqliga, iyo qoraallada cgi, kuwaas oo aan qeexin XARUN. Sidaa daraadeed, waa inaad si cad u qeexdid - nooca nooca ah ee aan caadi ahayn. Waxa kaliya ee loo baahan yahay in la dhigo wax! Kuwan soo socda ayaa ku filan inta badan kiisaska.

Waxay u dhigeen masrax (TERM) vt100

Tilmaam (hubin kaliya oo hoos imanaya BSDI BSD / OS 3.1 i386) waa la xiraa haddii SHELL iyo HOME aan la dejin. Tani waa dhibaato marka la eego caqiidada , iyo qoraallada cgi , kuwaas oo aan ku qeexin isbeddellada cimilada. Sidaa daraadeed, waa inaad si cad u dhigtaa - nooca nooca aan caadi ahayn. Waxa kaliya ee loo baahan yahay in la dhigo wax! Kuwan soo socda ayaa ku filan inta badan kiisaska.

(XADDIS) / usr / maxaliga / bin

Qaar ka mid ah hirgelinta ptys waxaa loogu talagalay in qalabka xawaaruhu uu soo saaro wixii wax soo saar la'aan ah ka dib 10 ilaa 15 ilbiriqsi (lambarka dhabta ah waa fulin-ku-tiirsane) ka dib marka geedi-socodku xiro sharraxa faylka. Sidaas awgeed barnaamijyada la filayo sida

taariikhda hurdada ee hurdada 20 filan

wuu ku fashilmayaa. Si looga hortago tan, codso barnaamijyo aan dhexdhexaad ahayn oo leh exec halkii caajis . Inkasta oo ay jiraan xaalado noocan oo kale ah, hadana aanan weligay la kulmin xaalad ahmiyadda ugu dambeysa ee barnaamijka dhabta ah ee dhexdhexaadinta ah lumay sababtoo ah dhaqankan.

Dhinaca kale, Qodobbada UNICOS ee Cray waxay tuuraan wax kasta oo maqan oo aan wax maqlin isla markiiba ka dib markii geedi-socodka uu xidhay faahfaahinta faylka. Waxaan u soo gudbiyay tan Cray waxayna ku shaqeynayaan hagaajin.

Mararka qaarkood dib u dhac ayaa loo baahan yahay inta u dhexeysa jawaab degdeg ah iyo jawaab, sida marka interface interface uu bedelayo goobaha UART ama isbeddelka qiimaha boodka adoo raadinaya bilow / istaagid qoryo. Caadi ahaan, tan oo dhan waxay u baahan tahay hurdo labaad ama laba. Farsamooyin badan oo xooggan ayaa ah inay dib u noqdaan illaa iyo inta qalabku diyaar u yahay inuu helo talooyin. Tusaalahan soo socda ayaa isticmaala labada xeeladood:

dir "xawaaraha 9600 \ r"; hurdada 1 filanayo {marxalad "dir" \ "; exp_continue} $ prompt}

dabagalka -code ma shaqeyn doono amar kasta oo ku fadhiya dhacdada Tcl ee dhacdada, sida hurdada. Dhibaatadu waxay tahay in dhacdadu ay dhacdo, Tcl waxay ka koobantahay codadka soo noqoshada ee ka yimaada dhacdooyinka async. Bakhshiintu waxay tahay in calanka calanka laga dhigo calanka. Ka dibna calamee calanka markiiba amarka kadib (sida, hurdo).

Ammaanka rajada dib-u-helidda wuxuu iska dhego-tiraa-doodda waqtiga oo aan laheyn fikrado waqti-gaaban guud ahaan.

& # 34; KA HELI KOOXAHA & # 34;

Waxaa jira dhowr arrimood oo ku saabsan Fikradda laga yaabo inay noqon karto mid aan habooneyn. Qaybtani waxay isku dayaysaa in ay wax ka qabato qaar ka mid ah waxyaabahan iyaga oo la soo jeediyay laba talo.

Dhibaatada guud ee la filayo waa sida loo ogaado waxqabadka qolofka. Maaddaama kuwani ay si gooni ah u kala duwan yihiin dad kala duwan iyo qolofka kala duwan, gogol-xakameynta rlogin way adkaan kartaa adigoon ogayn isla markiiba. Heshiiska macquulka ah waa in dadka isticmaala ay muujiyaan ficil joogta ah oo sharaxaya sida ugu dhaqsiyaha badan (gaar ahaan, dhammaadka) ee bedelka bay'adda EXPECT_PROMPT. Xeerka sida soo socota ayaa loo isticmaali karaa. Haddii EXPECT_PROMPT aysan jirin, lambarka wuxuu weli haystaa fursad wanaagsan oo ah inuu si sax ah u shaqeeyo.

($ | # | \ $ $) $ "; # default prompt catch {soon prompt $ env (EXPECT_PROMPT)} filan -re $ prompt

Waxaan kuugu dhiiri gelinayaa inaad qorto naqshado rajo leh oo ay ku jiraan dhammaadka wixii aad filayso inaad aragto. Tani waxay ka hortageysaa suurtogalnimada in laga jawaabo su'aasha ka hor intaadan arkin wax walba. Intaa waxaa dheer, intaad awoodi kartid inaad ka jawaabto su'aalaha ka hor intaadan si buuxda u arag, haddii aad horay uga jawaabtid, jawaabtaada ayaa laga yaabaa inay soo muuqato dhexda dhexe ee su'aasha. Si kale haddii loo dhigo, wadahadalka soojeedey ayaa noqon doona mid sax ah, laakiin eeg sawir.

Dardar gelinta ugu badan waxaa ka mid ah dabeecad boos banaan. Tusaale ahaan, isla markiiba fargalku waa 'f', 't', 'p', '>' iyo. Si aad ula socotid isla markiiba, waa inaad xisaabisaa mid kasta oo ka mid ah jilayaashaas. Waa qalad caadi ah in aan lagu darin meesha bannaan. Si cad u dhig.

Haddii aad isticmaasho naqshadda foomka X *, * wuxuu la mid noqon doonaa dhammaan wax soo saarka laga helay dhamaadka X ilaa wixii ugu dambeeyey ee la helay. Tani waxay u muuqataa mid caqli gal ah laakiin waxay noqon kartaa mid aad u jahwareersan sababta oo ah weedha "wax ugu dambeeyay ee la helay" way kala duwanaan karaan iyadoo ku xiran xawaaraha kombuyuutarka iyo ka shaqeynta I / O labadaba xagasha iyo darawalka qalabka.

Gaar ahaan, bani-aadmigu waxay u muuqdaan in ay arkeen wax soo saarka barnaamijka imanaya farshaxan weyn (atomically) marka dhab ahaantii inta badan barnaamijyada ay soo saaraan xariiq halbeegba mar. Marka la eego tani waa kiiska, * qaabka cutubkii hore wuxuu kaliya u egyahay dhamaadka lineka xitaa haddii ay u muuqato in ka badan, sababtoo ah xiligii cayaarta oo dhan wax soo saarka la helay.

rajeynayaan inaysan lahayn hab lagu ogaado in soo-saarka dheeraadka ah uu imaanayo ilaa mooyaane si gaar ah loo xisaabtamo.

Xitaa waxay ku xiran tahay xariijinta xariijinta tooska ah ee aan tooska ahayn. Ma aha oo kaliya barnaamijyada ma dhicin in ay ballan qaadaan ballanqaadka noocan ah ee ay sameeyaan, laakiin nidaamka qashinka ayaa jebin kara xariiqyada soosaarista si ay jebinayaan meelo aan muuqan. Sidaa darteed, haddii aad ku muujin kartid jilayaasha ugu dambeeya ee isla markiiba markaad wax qorayso, waxaa habboon in sidaas la sameeyo.

Haddii aad sugeysid nidaam ka mid ah soo-saarka ugu dambeeya ee barnaamijka oo barnaamijkuna wuxuu u bixiyaa wax kale halkii, ma awoodi doontid inaad ogaatid taas oo leh erayga muhiimka ah ee wakhtiga . Sababta ayaa ah inaan filaneynin wakhti go'an - hadana waxa uu helayaa calaamadda eof . Isticmaal halkan. Xitaa ka sii fiican, isticmaal labadaba. Habkaas oo kale haddii khadkaas uu mar walba ku wareegsan yahay, uma baahnid inaad saxo laftiisa.

Tilmaamaha cusub ayaa badanaa loo beddelaa dib u celinta, isku xigxiga linefeed marka ay soo saaraan darawalka kumbuyuutarka. Sidaa darteed, haddii aad rabto qaab asaasi ah oo si toos ah u dhigma labada xariiq, laga bilaabo, yiraahdo, printf ("foo \ nbar"), waa inaad isticmaashaa qaabka "foo \ r \ nbar".

Turjubaan la mid ah ayaa dhacaya markaad akhrisid user, via expect_user . Xaaladdan marka, markaad riixdo, waxaa laguugu turjumi doonaa cusub. Haddii la filayo in markaa la sii wado barnaamijka u dhigma qaabka uu u shaqeynayo (sida telnet), waxaa jiri doona dhibaato, maadaama barnaamijku uu rajeynayo soo celinta dhabta ah. (Qaar ka mid ah barnaamijyada dhab ahaantii waxay u dhaafi karaan in ay si toos ah u turjumayaan casriyeynta cusub, laakiin badidoodu ma badna.) Nasiib darro, ma jirto hab lagu ogaanayo in barnaamijku uu gawaarida u dhigo qaab habaysan.

Halkii ay gacanta ku beddeli lahayd naqshad cusub oo soo noqnoqonaya, xalka ayaa ah in la isticmaalo amarka "cuntada cagaaran", taasoo joojin doonta tarjumaadda. U fiirso, si kastaba ha ahaatee, taasi waxay ka dhigan tahay inaadan sii wadi doonin sifooyinka khadadka ah ee la kariyay.

isdhexgalka si toos ah ayaa u dhigaa kumbiyuutarkaaga si aad uhogasho ah sidaa daraadeed dhibaatadan ma dhicin.

Waxaa badanaa faa'iido leh in lagu keydiyo sirta (ama macluumaadka kale ee gaarka loo leeyahay) ee qoraallada la filayo . Tan laguma talinayo maaddaama wax kasta oo lagu keydiyo kombiyuutar uu u nugul yahay in qofku helo. Sidaa darteed, si isdabajoog ah u keenaya ereyada sirta ah ee qoraaga waa fikrad wax ku ool ah marka loo eego iyaga macno ahaan. Si kastaba ha noqotee, mararka qaarkood sida gelitaankaasi waa suurtagalnimada keliya.

Nasiib darro, Nidaamka faylka UNIX ma laha hab toos ah oo loo abuurayo qoraallo la fulin karo laakiin aan la aqbali karin. Nidaamyada taageera qoraallada qoraalka ah ee loo yaqaan 'setgid plell script' waxay si dadban u siman karaan sidan:

Abuuri Qoraalka Sugitaanka (oo ku jira xogta qarsoodiga ah) sida caadiga ah. Sameeyaa ruqsadaha waxay noqon karaan 750 (-rwxr-x ---) oo ay leeyihiin koox aamin ah, ie, koox loo oggol yahay in ay akhriso. Haddii ay lagama maarmaan noqoto, abuur cusub kooxdan ujeedadan. Marka xigta, samee qaan-sheegasho / bin / sh oo leh oggolaansho 2751 (-rwxr-s - x) oo ay leeyihiin koox isku mid ah ka hor.

Natiijadu waa qoraal ah oo laga yaabo in la fuliyo (oo wax laga akhriyo) qof kasta. Marka la soo weeraro, waxay maamushaa qoraalka rajada .

& # 34; SEE ALSO & # 34;

Tcl (3), naaqus (3)
"Sahaminta Sugitaanka: Qalabka Tcl-ku-saleysan ee Barnaamijka Isdhexgalka" by Don Libes, pp. 602, ISBN 1-56592-090-2, O'Reilly iyo Associates, 1995.
"filan: In la daaweeyo kuwan aan la xakameyn karin ee isdhexgalka" by Don Libes, Talaabooyinka Shirkadda USENIX 1990, Anaheim, California, June 11-15, 1990.
"Waxaan adeegsaneyaa Awoodda Nidaamka Maamulka Nidaamka Fulinta" by Don Libes, Talaabooyinka Shirkii Qalinjebinta Nidaamyada Nidaaminta ee USENIX 1990, Colorado Springs, Colorado, Oktoobar 17-19, 1990.
. "Tcl: Luqad Amar Lagu Sameeyey" by John Ousterhout, Talaabooyinka Shirka Shirarka USENIX 1990, Washington, DC, January 22-26, 1990. Waxaan "filanayaa: Scripts for Controlling Interactive Programs" by Don Libes, Systems Computing , Vol. 4, MAYA 2, Jaamacadda California ee Cafimaadka Saxaafadda, Bishii Nofembar 1991. I "Imtixaanka Is-imtixaanka Nidaamka Isku-Diiwaangelinta iyo Ku-Meel-Gaarsiinta", Don Libes, Talaabooyinka Shirweynihii USENIX 1992, San Diego, TX, Juun 12-15, 1992..I "Kibitz - Isku xirnaanta Barnaamijyada Isdhexgalka ah ee Isdhexgalka ah", Don Libes, Software - Practice & Experience, John Wiley iyo Sons, West Sussex, England, Vol.

23, May 5, May, 1993. Waxaan "Debugger for Tcl Codsiyada", by Don Libes, Tallaabooyinkii 1993 Tababarka Tcl / Tk, Berkeley, CA, June 10-11, 1993.

QORAA

Don Libes, Machadka Qaran ee Istaandarada iyo Teknolojiyada

WAXYAABAHA LOOGU TALAGALAY

Thanks to John Ousterhout for Tcl, iyo Scott Paisley si loo dhiirigeliyo. Thanks to Rob Savoye oo loo yaqaan 'code of autoconfiguration'.

DIIWAANGADA TAARIIKHDII Dukumiintiyada badan oo ka mid ah horumarka laga filayo . Waxay ka dhigaysaa wax xiiso leh oo laga yaabo in ay ku siiso aragti dheeraad ah software-ka. Waad ku mahadsantihiin dadka ku xusan in ay i soo direen qalabka casriga ah waxayna bixiyeen gargaar kale.

Naqshadeynta iyo hirgelinta Rajeynta waxaa lagu bixiyay qeyb ka mid ah Dawlada Mareykanka, sidaas darteedna waxaa ku jira Diiwaanka Dadweynaha. Si kastaba ha ahaatee, qoraaga iyo NIST waxay jecel yihiin credit haddii barnaamijkan iyo dokumentiyada ama qaybo iyaga ah loo isticmaalo.