Daxuyaniya Fermana Linux / Unix

Hêvîdar e ku bernameyek bernameyek ku bernameyek pirtûkek din ve hevdîtin dike. Li dû şîfre, hêvî dibe ku çi ji hêviya bernameyek hêvî dibe û çi bersiva rast be. Zimanek şirovekirin ku avakirina danûstandinên dîrektîfên avahiyê û avahiyên bilind-bilind kontrol dikin. Herweha, bikarhêner dikare bikaribe kontrola xwe bike û dema ku bixwaze, paşê veguhastina vegerandina nivîskî.

Expectk hevpeymaniya hêvî û Tk e. Ew tenê mîna hêvîdar û Tk dixwaze dike. Li hêviya ku ji Tcl-ê ve hêvî dikir ji bo hêvî dikare li C-C an C ++ bi kar tîne.

Navê "hêvîdar" ji vê fikrîteyê tête şandin / hêviyên ku ji hêla bernameyên xweyî, kermît û bernameyên kontrolê yên modem ên populer ve têne çêkirin. Lê belê hûn xerîb ne, hêvîkirin ku gelemperî gelemperî ye ku ew dikare wekî fermî û asta ku bi bernameyek bernameyê û karûbarê di hişê xwe de werin. Dîsa hêvî dikim gelek bernameyên di heman demê de biaxivin.

What Expect Can Do

Ji bo nimûne, hin tiştên ku hêviya hêviya dikane dikarin ne:

Gelek sedemên cûda hene ku çal nikare van karên xwe bistînin. Hemû bi hêviya mimkin in.

Bi gelemperî, hêvîdar e ku ji bo bernameyek bernameyek pêdivî ye ku pêwendiya di navbera bernameyê û bikarhênerê de hewce dike. Hemî pêwîst e ku têkilî dikare bernameyek bernameyek taybetmend be. Hêviya hêvî dikare ji bo bikarhênerê kontrola bernameyê bêyî kontrola bikarhênerê kontrol bikin. Bi vî awayî, bikarhêner dikare bikaribe kontrola li ser pirtûkxaneyê vedigere.

Bikaranîna

Dîsa hêvîdariya cmdfile ji bo lîsteya fermandarên bi darvekirinê bixwîne. Dibe ku hûn li ser sîstemên ku piştgiriya # bi awayek zûtirîn bang kirin. nirxandina nivîsandina nivîskî wekî bicihkirin û rêza yekem li nivîsa sernivîsê nîşan bide:

#! / usr / local / bin / expect -f

Bê guman, rêyek rast eşkere dike ku derê ku hêvî dike dijî. / usr / local / bin tenê mînakek e.

Al-A-flag ala fermî ku pêşî di şîfreyê de bê darizandin. Divê emrê gerek ji bo pêşîlêgirtina bi şikilê vekêşin xuyakirin. Ev bijare dikare çend caran bikar bînin. Gelek emir dikarin bi yek -c bi darvekirin bi wan re bi semicolî veşartin. Fermanên ku ew tê xuya kirin, darve kirin. Dema ku Expectk bikar bînin, ev bijare wek -command diyar kirin.

Ala -d ala dibe ku hilberîna navnîşanek hin veguherîn, ku di çalakiyê de çalakiya navxweyî yên wekî hêvî û pêwendiyê re rapor dike. Ev ala heman rengî wekî "exp_internal 1" di destpêkê de pirtûkek hêvîdar e, herweha versiyonê hêvî ye.

Ala -D-flag dikare debuggerek interaktîkî dike. Divê nirxek anteger divê pey bike. Debugger dê berî ku pêvajoyek Tcl a ku hewa nirxek ne-şûne ye an jî kontrola ku ^ C tehl kirin an qutiyek xilas hate destnîşankirin, kontrola debuggerek din jî di pirtûkxaneyê de xuya dike. Dema ku Expectk bikar bînin, ev bijarte wek Debug.

Ala F-a-yê pelê pêşniyar dike ku ji kîjan fermanên xwendin. Berê ala xwe alternatîf e ku ew bi tenê karbidest e ew e ku dema bikaranîna #! nirxandin, da ku armancên din dikarin li ser fermana fermî bên dayîn. Dema ku Expectk bikar bînin, ev bijare wekî -file diyar kirin.

Bi veguhastinê, pelê fermandarê di bîranînê de xwendin û di tevahî de darve kirin. Vê carinan hêjayî li pelên yek yek bixwîne. Ji bo ku ji bo pelên desthilatdar ên hêza bi hêza vî awayî veguherîne, al-flag -b bikar bînin. Dema ku Expectk bikar bînin, ev bijare wekî -buffer diyar kirin.

Heke pelê "-" wekî pelê nirxandin tête danîn, lêgerîna standard standard xwendin. Bikaranîna "" // "" ji pelê ji rastiyê ve were xwendin "-".

Sedemên Thei-ê hêvî dikin ku ji bo pelan ji wan re veguherînin ji hevalbendan re bisekinin. Pêşveçûn bi rêya fermana an jî li EOF ve tête qedexekirin. Eger ala pelê ne-an -c tê bikaranîn. Dema ku Expectk bikar bînin, ev bijare wek -interactive diyar kirin.

- Dibe ku dawiya alternatîfên derxistin bikar bînin. Vê gav e ku hûn bixwazin ku tu dixwazî ​​alternatîf-like-like-a-script-no-be-no-be-be-be-an-şirovekirin-şirovekirin. Ev dikare bi karanîna bi karanîna # ji bo pêşniyarên alîgirên alozî yên ku hêvî dikirin. Ji bo nimûne, jêrîn dê armancên bingehîn ên ku navnîşa lîberê di argûkê de guherîn.

#! / usr / local / bin / hêv -

Têbînî ku peymana (3) û herwiha rêbazên bicîhkirina (2) divê divê dema ku armancên ku # xet.

Pelê $ exp_library / expected.rc heke hebe, lêgerîna n-an jî dema ku n-ê tê bikaranîn. (Gava ku Expectk bi kar tîne, ev bijare wek -NORC diyar kirin.) Piştî vê yekê, pelê pelê ~ / .expect.rc otomatîk e, lêgerîna ku -n ala bikar anîn. Heke ku hawirdora hawirdora DOTDIR ve hatiye diyarkirin, ew bi rêkûpêk wekî derman û têgihandin. Dema ku Expectk bikar bînin, ev bijare wekî -norc diyar kirin. Ev çavdêriya tenê piştî ku li darizandina her-cûre kar dike.

-V Sedemên ku hêvî dikin ku hejmara xwe ya guhertoya çap bike û derkeve. Li alîgirê nêzî Expectk, ku navê navên ala dirêj, tê bikaranîn.

Argokên alternatîf di nav lîsteyê de têne çêkirin û di nav guhertina navnîşan de guherîn kirin û. argc di destpêka dirêj de argv e.

Argv0 tête navnîşan e ku navnîşek nivîskî an binaryî be, eger tu lîpek bikar anîn. Ji bo nimûne, paşnavên paşnav navê nivîskî û sê sêyanên pêşîn derketin:

send_user "$ argv0 [lange $ argv 0 2] \ n"

Fermandaran

Hêvîdariya Fermana Zimên Zimanê Zimanê bikaranîn. Tclê kontrola avê (eger, ji bo vekêşandinê), danirxandina nirxandin û gelek taybetmendiyên din, wekî wekî veguhestin û rêbazê binirxîne. Fermanên ku li vir têne bikaranîn lê nehatiye diyarkirin ((set, if, exec) saz kirin Tcl in. Hêvîdarên piştgirî dide piştgirî. Heke din jî diyar nekir, emrê wergirtin stûyê vala vedigerin.

Fermanên alfabetî têne lîstîn kirin ku ew bi lez zûtirîn. Lêbelê, bikarhênerên nû bikaribin hêsan bi destnîşankirina sponsor, bişînin, hêvî dikin, û pêwendî bikin, di destpêka vê yekê de bibînin.

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

girêdana bi pêvajoyê ya dawî dike . Pir bernameyên înaktaktîf dê ê EOF bi ser stdin û derveyî vekin bike; Bi vî awayî bi gelemperî hebe ku pêvajoyê jî jî bikuje. Li alî -ya alî ev pêvajoya ku bi peymana nêzîkî navê spawn_id ve girêdayî ye.

Her du hêvî û pêwendiyê dê di dema ku pêvajoya niha veguherîne û bi awayekî nêzîk dûr bikin, lê heger hûn pêvajoyê bikujin, bibêjin, "'pid $ pid kill", divê hûn bi zelal xilas bikin .

Ala flag-diyarbekir diyar dike ku hejmar id-ê di pêvajoyên nû de çêdibe vekirî ye yan jî ev pêvajoya bêhtir kirin. Ji bo ku ji bo vekêşana spawn ve vekişîn,, nirxê bikar bînin 0. Hêzên nirx ên ne-sifir integer di pêvajoyên nû de vekin.

Ala -slave alîgirê xulamê bi spawn id ve girêdayî ye. Dema ku girêdana girtî ye, xulam bixwe vekirî ye û eger ew hîn vekirî ye.

Heke girîng e ku têkilî bi awayekî zelalî an zelal vekirî ye, divê hûn li benda banga ku hûn pêvajoyek kernel pêvajoya pêvajoyê ya paqij bike. Fermandariya nêzî nayê rawestandin ji ber ku ew garantî nabe ku girêdana pêvajoya pêvajoyê dê dê ji derkeve derve.

debug [[-now] 0 | 1]

kontrola Tcl debugger kontrol dike ku hûn bi daxuyaniyên veguhestin û destnîşankirin.

Heke argoket nîne, 1 jê hebe ku vegera debugger nabe, wateya 0 vegerî.

Bi armancek 1, debugger dest pê dike. Bi armancî 0, debugger raweste. Heke 1 argûya ala ala -now-ê ji berê ve tê de, debugger yekser dest pê dike. Wekî din, debugger bi daxuyaniya Tcl ya din re dest pê kir.

Fermandariya debug tune ti traps tune. Ji ber ku hûn bi destpêka D-D-ê re hêvî bikin.

Fermandarê jêderê veqetandina pêvajoyek ji çermê veguhestin . Ew di paşê paş de berdewam dike. Pêvajoya koma pêvajoyê xwe tê dayîn. Standard I / O veguherandin / dev / null .

Pûçek jêrîn veqetandin tê bikaranîn ku di pirtûkxaneyê de li ser paşde berdewam bike.

heger {{fork]! = 0} veqetin derve. . .

Peyvek jêrîn şîfreyek xwendin û piştre bernameyeke her demjimêr bernameyek dike ku her cara ku tê veşartî şîfreyek daxwaz dike. Lîsteya şîfreyê şîfreyê dide ku hûn tenê careke din binivîsin.

send_user "şîfreya" \ "hêvîdar -re" (. *) \ n "ji bo {} 1 {} {heger {[fork]! = 0} {sleep sleep 3600; berdewam bike} têkildarî private_prog hêvî bike: Şîfreya" $ expect_out ( 1, string) \ r ". . . derveyî}

Vê gavê ji bo bikaranîna taybetmendiya asynchronous di qalikê asynchronous (&) de ye ku hêviya mîmên termînal ji ber veqetandina tomar xilas bike û paşê paşê wan ptyên nû bikar bînin. Bi & Hêviya hêvî nabe ku amadekariyên paramarkerên xwendinê ji xwendinê ve ji ber ku Terminal ji ber ku dema ku hêviya kontrola xwe bigire ve hatiye xwendin.

derketin [-opts] [status]

Sedema ku hêvî bike ku ji derveyî an amade bikin amade bikin.

Ala alî -onexit dibe ku armancên din ên ku ji hêla veguhestinê ve tê bikaranîn. Ne bê armanca, destûra derveyî ya niha ve hat.

Li ala -noexit dibe sedema hêvî bikin ku ji bo pêşveçûnê amade bike, lê belê ji rastiyê veguhestin kontrola sîstema xebata. Hêderê vekirî ya bikarhêner-ê vekirî tê û dihêle ku bi destûra hundurên xweser ên xweser ve tê de. Ne bêtir biryara hêviya hêvîbûnê bêne darvekirin. Vê gavê ye ku heger hûn digerin bi hêvîdariya Tclên din ên din. Wateya wergirtinê (û paceya bingehîn heger li hawîrdora Tk) bimîne da ku hûn dirêjkirina paqijkirina Tcl ên din bikin. Heke ji derveyî hêvîbûnê dîsa tê gotin (lê dibe ku ev dibe.)

Li derveyî, hemû girêdan bi pêvajoyên spawned têne girtin. Pêvajoyê dê wekî wekî EOF bi pêvajoyên spawned têne dîtin. Ji derveyî derveyî çalakiyên din ji derheqa normal _exit (2) pêdivî ye. Ji ber vê yekê, pêvajoyên ku ji bo EOF ji bo kontrolkirina berdewam bike mayin derxistin. (Cûreyek celeb girîng e ku ji bo biryardariyê, wek nimûne, çi pêvajoyek ku pêvajoyek spawned be şandin, lê ev sîstem-girêdayî ye, bi gelemperî di bin dorpêçê de (3).

statuyek (yan 0 heke heke diyar nekiriye) wekî rewşa derveyî hêviya derveyî vegerî. Derkeve ku derkeve pirtûkan tête kirin ku derveyî derveyî dagir dike.

exp_continue [-continue_timer]
Fermandariya destnîşankirinê xwe hêvî dike ku bi meriv dê ji nû ve vegerîne bêtir ji bo vegeriya ku bi rêve dibe. Bi veguhastina xerîbê re_continue veguhastina dema timer. Ala -continue_timer ala ku ji nû ve were veguhestin asteng dike. (Binêrin ji bo bêhtir agahdarî.)

nirxa [-f file] exp_internal
bêtir fermanên ku ji bo nirxa ne-şûne ye ku agahdariya navnîşî ya navxweyî bişîne ji bo ku hûn hêvî bikin. Ev derveyî heger nirxek e. Gelek agahdariya dîktatoriyê her kesayetiyê wergirtiye, û her hewldanên ku ji bo hilberên heyî yên heyî ve bistînin.

Heke pelê alternatîf tête danîn, hemî normal û hilberandina debugî li pelê pelê tête (nebe ku ji hêja nirxê ). Dibe ku pelê hilberandina dahatûya berê ya vekirî ye.

Ala alî -info dibe sedema xeletî ya ku ji bo argûnên herî dawî yên ne-agahdarî vegerînin.

exp_open [args] [-i-spawn_id]
Vê nasnameyek Tcl-ê ku bi spawn id-yê re têkildar vedigire. Piştgiriya pelê wê bikar anîn wekî ku ew ji hêla hêla Tcl vekirî ve vekirî ve hate vekirin . (Divê zivistanek êdî neyê bikaranîn. Vê gav tête darizandin.

Ala -leaveopen flag ji bo rêgezên hêvîdariyê ji bo gihîştina spank id vekin. Pêvek li ser spawn id bi darvekirin.

exp_pid [-i spawn_id]
vegerandina pêvajoya idê ya ku bi pêvajoya borî vekirî vedike. Heke ala -i-ê tê bikaranîn, pid vegeriya ku ji hêla spawn id hatiye ve girêdayî ye.

exp_send
ji bo şandina sendalê ye .

exp_send_error
ji bo send_error an alias e .

exp_send_log
ji bo send_logê ye .

exp_send_tty
ji bo send_tty vekirî ye .

exp_send_user
ji bo send_userek eynî ye .

exp_version [[-exit] version]
Ji bo tête ku ji hêla lîberyona bi guhertoya niha ya hêvî ve girêdayî ye.

Bi armancên tune, guhertoya niha ya hêvîbûnê vegeriya. Ev variant dikare di nivîsa te de encodekirin. Ger hûn bi rastî dizanin ku hûn taybetmendiyên nû yên guhertoyên bikar nakin, hûn dikarin pirtûka pêşîn diyar bikin.

Versiyonên sê hejmaran ji hêlên cuda ve têne çêkirin. Ya yekem girîng e. Vebijêrkên ji bo versiyonên hêvîdariya hejmareke hejmarek mezin ên cuda dê hema hema bê kar nekin. Dema ku hejmarên sereke ne bi hev re hevkariyek vedigire.

Duyemîn hejmareke biçûk e. Vebijêrk ji bo guhertoya heyî ya ku ji hêla guhertoya heyî ya herî biçûk ve tête nivîsandin dibe ku ji hêla hin taybetmendiyên hinek nû ve girêdayî ye û dibe ku nabe. Dema ku hejmarên mezin ên mîqaş bi hev re meseleyek xilas dibe, lê ji hejmara hêvîbûna hêvîbûna hejmarê piçûk kêmtir e.

Sêyemîn hejmarek e ku hema di versa versiyonê de beşdarî nabe. Lêbelê, dema ku belavkirina pergala belavkirinê pêdivî ye ku di heman awayî de, ji hêla belgeyên din an jî çêtirkirinek din ve hate guhertin. Vebijêrk 0 ji her re guhertoya nû ya piçûk e.

Ji ala ala -exitê, hêvîdariyek nirxandina çewtiyek dike û eger vala vala vala ye.

hêvî dikin [[-opt] pat1 body1] ... [-opt] patn [bodyn]
Heta heya yek ji nimûneyên pêvajoyê yên hilberandina pêvajoyek bi hev re digerin, a demek demek derbas dibe, an end-of-file tê dîtin. Ger bedenek dawî ya vala ye, ew dikare bê veşartin.

Nûnerên ji herî hêvîdariya dawî ya ku ji ber ku emrê hûrgelan ve berî hûrgelên din têne bikaranîn. Pirtûka ji biryara hêviya herî paşîn ya paşerojê paşî li paşekên din ên din têne bikaranîn.

Heke argûmet bi tevahiya hêviya hêviya hewceyê bêtir hewceyî hewce bike, hemî arîşkan dikarin "yekser" berbiçav bibin ku ji bo her lineê bi paşê vekişînê vebirin. Di vê rewşê de, guhertinên Tcl-ê herdem tevî tevgerên Tcl.

Heke pîvanek efterek efû ye , laşê peywendîdar li ser-end-pelê hate darizandin. Heke pîvanek demek dirêj e , laşê peywendîdar li ser demê darvekirin. Heke ku demek kurt nehatin bikaranîn, li ser demek çalakiyek null çalak kirin. Dema ku demjimêra demjimêvek dora 10 saet e, lê dibe ku nimûne, wekî mînak ji 30, bi alîyê emrê "30-a-a-day-a-day" de ye. Pêwîstek bêkêmahî dikare ji hêla nirx-1 tê ve tête navnîşkirin. Heke nimûne pergala pêşnavî ye, laşê peywendîdar an jî dema an jî dema dawîn-darvekirinê de derbas dibe.

Ger heke meydanên nimûne, laşê peywendîdar tê kirin. Hêviya hêviya encamê bedenê (an jî tewra betal bike heger st stringê vala) vegerîne. Di ahenga ku çend hevpeymanan bi hev re, yekem yek tê dîtin, ji bo bedenek hilbijêrin.

Her demê dema hilberîna nû de tête, ew ji her pergalê re di nav nimûne de tête kirin. Ji ber vê yekê, hûn nikarin ji bo neheqek meysek bi temamkirina dawî ya tiştek tiştek garantî kirin, lêpirsînin, wek mînak. Di rewşan de ku lezgîn nîne, divê hûn demjimêran bikar bînin (tenê mîna we ji we re heger hûn bi dest bi însan ve girêdayî bûn).

Pelên di sê awayan de diyar kirin. Bi rêkûpêk, pîvan têne diyar kirin ku bi fermana fonksiyonê ya Tclê . (Wek ramanên wekhevî ji bo axaftinên rasterast ên C-shell wekî gelemperî wekî "dungehan" tê gotin). Li ala -gl- flag dikare dibe ku ji bo parastina nimûneyên parastinê yên ku ji bila alîgirên ji alîgiran re dixebitin werin bikar bînin. Her tiştek bi destpêkê "-" divê dest bi vî awayî parastin. (Hemû strêner bi destpêkê "-" ji bo bijartinên pêşerojê vekirî ne.)

Ji bo nimûne, parçeyek jêrîn ji bo têkildariyek serketî dibîne. (Têbigere ku betal bike ku pêvajoyek din li ser şîfreyê vekirî ye.)

hêvî dikir {busy {busys busy = n; exp_continue} têkildarî "şîfreyeke nenas" hate betal kirin.

Quotes di çarçoveyek çaremîn de ji ber ku ew cihek in, pêwîst e ku ji hêla çalakiyê ve ji aliyekî vekirî ye. Patternên ku bi heman çalakiyê (wek sêyemîn û çir) divê hewceyê dîsa dîsa çalak kirin. Ev dikare ji hêla şêweyên regexp-stratejê ve tê bikaranîn (jêrîn binêrin). Agahdariyên bêtir li ser ramanên glob-stûn dikarin binirxînin li Tcl manual.

Sermaseyên regexp-style-style-follow-up-by-regregexp-Tcl- regexp (short- term "expression of regular") commands . rêjeyên rêjîman ên bi al- flagê têne destnîşan kirin . Nimûne berê berê dikare bikar tînin ku regexp a ku wekî:

hêvî dikir {busy {busys busy = n; exp_continue} -re "şîfreya nederbasdar | şîfreya nederbasdar" hate betalkirin

Her cureyên hûrgelan "nehêz kirin". Ev tê wateya ku nimûne neyên tevahî tevlihev bikin, lê dikarin dest pê bikin û her tiştî li qulikê (destnîşan bikin her tiştî her tiştê hevalêde). Bikaranîna ^ Ji destpêka stûyê re bikişînin, û $ ji bo dawiya dawiyê bikin. Têbînî ku eger hûn ji dawiya bendê ne bisekin, bersivên we bi hêsanî di naviya stringê de ji ber ku ew ji pêvajoyek birêvebirin eşkere bibin. Dema ku encama encamên rastîn hilberîn, hilberîna nefsek nexweşî ye. Ji ber vê yekê, karanîna $ $ be tête ku eger hûn bi xemgîniyê di dawiya strê de binivîsin.

Têbînî ku di gelek edîtoran de, $ û $ mîlyal û destpêka rêzên rêzdarî bi rêzdar re. Lêbelê, ji ber ku hêvî ne xerîb ne, ew celebên destpêkê û dawiya daneyên (yên ku li ser sînorên dijberî) digel niha li hêviya bêdengek bi hev re digel hev. (Di heman demê de, binivîse jêrîn li "pergala pergalê".)

Ala -ex-ê wekî pîvanê ku wekî stringek "rast" ye. Tu şîrovekirina * *, ^, û hûrgelan tête kirin (Her çiqas konsêrên Tcl-ê herdem divê bê dîtin). Bêguman rasteqîn her tim nebaş kirin.

Ala ala -nocase dibe sedema nimûneyên mezin ên derheqê ku ji ber ku heger lîstikên biçûk in. Nimûne bandor nîne.

Dema ku hilberandina xwendinê, bêtir ji 2000 bayîtan dikarin berê bi hêsîrên bi "bîr nekirin" bisekinin. Ev dikare bi mîhengê match_max veguherîne . (Têbigirin ku nirxên mezin ên mezin dikarin dikarin pişkek hûrgelê bistînin.) Ger heke pirtûka tevahî full_buffer e, laş peyda dike ku eger_max_max byte tê wergirtin û nimûneyên din tune. Ma an naveroka full_buffer tê bikaranîn an na, navekî bihaş hatine nivîsandin ku hêvî dikin (bafir).

Ger heke lîsteya pirtûka lêbigere ye, û nulls destûr têne (ji hêla remove_nulls ), laşê peywendîdar heke eger yek ASCII 0 hevhev dike. Ew ne gengaz e ku 0 bites bi rêya glob an an jî rêjeyên rêjeyên bi hev re bihev bikin.

Li gorî pîvana rengek (an eof an jî full_buffer), hilberek û pêşînek bêgihîştî ya berê di hêviya hêvîbûnê de (buffer) rizgar kirin. Mûstikên 9-mizgeftên vekirî yên regexpê di di guherînên celeb de (1, string) bi hêv_out (9, string) rizgar kirin . Heke ala alî -ên ku ji ber rengek ve tê bikaranîn, nirxandina destpêkirin û hilberandina nirxan (bi awayek ji bo lengazê vekirî ) ji 10 stûrên di çarçoveyê de (x, destpêk) û hêvîdar (X, dawîn) li xera ye ku x X e hejmarê, li ser bermerê paqijkirina veşartinê re. 0 ji bo dirûşmên ku tevahiya nimûne digelhev dike û ji bo pîvanên gerdûnî û rêjeyên rêjeyî têne çêkirin. Ji bo nimûne, eger pêvajoyek hilberîna "abcdefgh \ n" hilberandin, encamê:

"cd"

Wekî gotinên jêrîn darve kirin:

hêvîbûnê (0, string) cd set hêv_out (buffer) abcd set

û "efgh \ n" di hundirê hilberê de derkete. Ger pêvajoyek hilberê "abbbcabkkkka \ n" hilberandin, encameke:

hêv -indices -re "b (b *). * (k +)"

Wekî gotinên jêrîn darve kirin:

(0, end) 1 set hêv_out (0, end) 10 set hêv_out (0, string) bbbcabkkkk set hope_out (1, destpêkirin) 2 set hêv_out (1, end) 3 set hêv_out (1, string) bb set hope_out (2, destpêkê) 10 set hope_out (2, end) 10 set hopeout (2, string) k set hope_out (bafer) abbbcabkkkk

û "a \ n" li bendava hilberê veqetandin. Pîvana "*" (û -re ". *") Dê bête bifroşek bêyî ku bêtir pêvajoya ji pêvajoya xwendinê bixwîne.

Bi gelemperî, hilberek hevgirtî ji bendavên navxweyî yên hêvî werin red kirin. Ev dibe ku ji hêla ala -notransfer veguherînek nimûne nîşan bide . Ev ala bi taybetî di karanîna karûbarê de (û dikare ji bo hêsanîkirina paqijkirina "-not") dibe.

Idek spawn ya bi bi veguhestina derveyî (an eof an jî full_buffer) tête li hêvîkirin (spawn_id) vekirî ye .

Ala -timeout dibe sedema sedemên hêviya heyî ya ku ji bila nirxê jêrîn bikar tîne ji bila nirxa nirxê guherînerê dakêş.

Bi rêkûpêk, nimûne ji ber pêvajoyê ya derheqê dabeşkirî têne kirin, lê li alî ala lîsteya ji navê spawn_id re nîşan dide ku ji bo her rengên jêrîn (li ser pêş -i ) bi hev re digel hev. Lîsteya spawn_id an jî spitespace lîsteya spawn_îdan vekirî an veguherîkek ji bo vê lîsteya spawn_ids veguherîne.

Ji bo nimûne, mînakek jêrîn ji pêvajoya heyî, an "busy", "têkçûn" an "spawn_id" ji hêla $ proc2 ve hate "şîfreya nederbasdar" ye.

hêvîdar e ku {-i $ proc2 busy {busys busy = n; exp_continue} -re "şîfreya nederbasdar | şîfreya nederbasdar" hate betalkirin

Nirxa cîhêrengek global ya ku tu bikar tîne ku ji bo her spekên spî yên ku di nav hemû hêvên din de têne navnîşan têne çêkirin, ji bo hevdîtinên hêvî yên heyî. Spawn_id ji alî-a-alî bi nimûneyên têkildar tune (ango, bi yekser-e-peyda-peyda-peyda) peyda kirine, di heman demê de hêviya fermî bi her_spawn_id heye.

Li ala -i- ê jî dibe ku guherînek globalek navnîşî ye ku di rewşeke guherîn de ji bo lîsteya spawn-ê ji xwendinê tête xwendin. Heke guhartin guhertin. Ev rêyek çavkaniya guhertina I / O di dema ku emrê di darvekirinê de ye. Spawn id pêşkêşî vê rêbazê bi "indirect" spawn ids tê gotin.

Çalakî wekî nerazîbûn û berdewam ji sedemên avakirina rêbazên kontrola (ango, ji bo pêç ) ji bo rêkûpêk pêk tê. Fermandariya destnîşankirinê xwe hêvî dike ku bi meriv dê ji nû ve vegerîne bêtir ji bo vegeriya ku bi rêve dibe.

Ev e ku ji bo loopsên zelal ên ji derveyî vebigihîne yan daxuyaniyên hêvî dubare dike. Pirtûka jêrîn beşek parçeyek e ku rlogin otomatîk e. Exp_continue ji ber ku rlogin ji bo şîfreyê dide destnîşankirina ku daxuyaniyeke hêvî ya duyemîn binivîse (ji bo demek dinêrin) bibînin.

hêvîdar bikin {Şîfre: {stty -echo send_user "li ser malpera $ $ ji bo $ host:" hêv_user -re "(. *) \ n" send_user "\ n" bişîne "$ hêv_out (1, string) \ r" stty echo exp_continue} Girêdana {send_user} têkildarî \ n "derkevin" dema \ navnîşa \ send_user "têkildarî $ host \ n" derkevin "eof {send_user \" têkildar be: çewtiyek $ $ (nerastkirin) re $ prompt}

Ji bo nimûne, parçeyek jêrîn dikare bikarhênerek bikar bîne ku têkiliyek yekgirtî ya ku bixweberî bixweberî vekirî ye. Di vê rewşê de, termînal di nav awayek rawestî de ye. Heke ku bikarhêner "+" digire, guherînek pirr zêde dibe. Heke "p" tê xistin, gelek vegeriyan pêvajoyê şandin, dibe ku di vê awayê de rêvebirin, û "i" bikar bîne ku bikarhêner bi pêvajoya pêvajoyê biaxivin, bi awayekî bandor ji hêla şîfreyê veguherîne. Di her rewşê de, exp_continue destûrê dide ku hêvîkirina pêvajoya heyî ya ku di binpêkirina çalakiyê de berdewam bike.

stty raw -echo expect_after {-i $ user_spawn_id "p" {send "\ r \ r \ r"; exp_continue} "+" {incr foo; exp_continue} "i" {interact; exp_continue} "derketin" derketinê}

Bi rêkûpêk, exp_continue veguhastina dema timer. Timer nayê destnîşankirin, eger heger berbiçavkirinê li gel ala -continue_timer tê tê gotin.

hêv_after [expected_args]
karên wekhevî bi hêvîdariyê karibin bila ku hebên herdu hêvî û hêvîbûnê bi hev re bibin, pîvana hêvî tê bikaranîn. Ji bo agahdariya bêtir agahdariyê hêvîdar bikin.

expected_background [expect_args]
heman gumanan wekî hêviya xwe digire , lê ew yekser vegerî. Dema ku veguhestineke nû nîne, nimûneyên ceribandin têne ceribandin. Di demjimêr û paşnavê de ne ku ne ji bo hêviya paşnavê ne û nehêle bêdeng in. Wekî din, biryara hêvîbûnê ya hêvîbûnê hêvî dike ku ji ber ku hêviya nimûne nimûne û paşerojên paşerojê hêvî dike.

Dema ku hêvîkirina çalakiyên paşdêran têne nirxandin, pêvajoya paşveçûnê ya ji bo heman spawn id hat asteng kirin. Dema ku çalakiyê temam dike, pêvajoya paşdêriya paşveçûna paşdavê bête asteng kirin Dema ku pêvajoya paşveçûna paşnavê de hate astengkirin, ew e ku bibe (pêşeroj) li ser heman spawnê hêvî dikim .

Ew ne gengaz e ku hêvîkirina hêvîkirina dema ku hêviya hêvîbûnê bêdeng e. hêv_background ji bo spekek taybetî ya id hatiye jêbirin, ji hêla hêviya nû ya hêvî ya nû ya bi heman spawnê ve ragihandiye ve hatiye jêbirin. Daxuyaniya hêvîbûnê ya paşerojê bi nimûne nimûneyên îdeolojî da ku ji derheqê paşnavê li hevbigereyan re bistînin.

hope_before [expect_args]
heman gumanan wekî hêviya xwe digire , lê ew yekser vegerî. Ji hêla heman derê hêvîdarên ku ji hêla heman spawnê ve girêdayî nimûneyên nimûne yên nimûne ve girêdayî-an-ê-an-an-ê-an-ê-an-an-ê-an-an-ê-anî-an-an-an-ê-an-an-ê-an-ê-an-ê-an-ê-an-ê-an-ê-an-ê-an-an-ê-anî têne. Ger heke meydanên celeb, ew dihêle ku ew di dema biryara hêviyê de diyar e, û bedena girêdayî di çarçoveya hêviya hêviyê de hate darizandin. Ger hebên ku ji hêvî û her du hêvî didin hev re didin, her tiştî ji ber hêviyê tê bikaranîn.

Ger hebek nimûne diyar e, hejmara spawn id ji bo nimûne nayê kontrolkirin.

Heta ku li ala al- Ai- ê ji hêla vexwendinê ve hatibû vebawer , hêvîdar e ku hûrdeyên li hemberî mizgefta spawn-ê ku di demekê de hêvî dikirin ( meseleyê hate dabeş kirin) bihev dikeve .

Ala alî -info dibe ku hêvî bikin ku ji bo diyariyên heyî yên ku dê wê bi hev re bikişînin vegerînin. Bi rêkûpêk, ew li ser spawn idê rapor dike. An spec spec id id dikare ji bo agahdariya ku ji bo spana id tê dayîn. Bo nimûne

expect_before -info -i $ proc

Di piranîya taybetmendiyê idek spawnê de bê dayîn. Li ala alîgirên rasterastên rasterast ên ku tenê tenê ji navnîşên nerastî têne têne rawestandin.

Li şûna taybetmendiya spawnê, dê "-all" ala dê "-info" ji bo ku li ser hemû spawn-ê rapor bike.

Pêwîstina ala ala -info dikare wekî ku meriv ji hêviya hêvîbûnê ve tê bikaranîn.

haha [expect_args]
mîna hêvî ye, lê ew ji alîgirên / dev / tty (ango kotstrokes ji bikarhênerê) xwendin. Bi rêkûpêk, xwendinê di moda xwandî de tête kirin. Ji ber vê yekê, rêzan divê bi vegera bi dawî bibin ku ji bo hêviya wan bibînin. Ew dikare ji hêla stîteyê veguherîne (li jêr kişandina stty binêre ).

expect_user [expect_args]
wek hêvî ye, lê ew tîpan ji stdin (ango kêşstrokes ji bikarhêner) xwendin. Bi rêkûpêk, xwendinê di moda xwandî de tête kirin. Ji ber vê yekê, rêzan divê bi vegera bi dawî bibin ku ji bo hêviya wan bibînin. Ew dikare ji hêla stîteyê veguherîne (li jêr kişandina stty binêre ).

milêvdanî
pêvajoyekedike . Pêvajoya nû ya kopiyek rastek e ku pêvajoyek hêjayî ye . Di serkeftinê de, vegerandina diranan 0 ji bo pêvajoya nû (zarok) pêvajoyê û nasnameya pêvajoyê ya pêvajoya zarokê dê pêvajoya bavê vegerîne. Li ser nekevin (ji ber kêmbûna çavkaniyên çavkaniyê, wekhev, veşartin, bîhna xweş), paşvekirina paşîn 1-ê pêvajoya dêûbavan, û pêvajoya zarokê nehat afirandin.

Prosesên ku ji hêla darizandina derveyî vekişînin , tenê mîna pêvajoya bingehîn. Pêvajên ku ji bo pelan têne nivîsandin. Heke hûn di piraniya pêvajoyên debugekirinê de an betalkirinê nebin, encam dibe sedema tevlihev.

Hin pty pêvajoyan dikarin ji hêla xwendevanên û nivîskaran ve bi tevlihev dibe, bi awayekî hêdî. Ji ber vê yekê, ew ji ber pêvajoyên spawning safest e ku ew e.

têkilî [string1 body1] ... [stringn [bodyn]]
kontrola pêvajoya heyî ya bikarhênerê dide, da ku ku pêvajoya niha ya keystrokes şandin, û stdout û stderr ji pêvajoya niha ve vegerin.

Dibe ku argûkên string-body may be diyar kirin, di rewşê de ku gava laş têkildarî dema ku girêdayî pêvajoyê tê de derbas kirin. (Bi veguhastin, string pêvajoyapêvajoyê nehatiye şandin.) Dema ku laşê dawî ya wendayî tête fermana wergirtî tête.

Heke argûyan bi tevahiya danûstendinê ve girêdayî ye, hewceyên ku yek ji rûpela paşde vekişînin, hemî arîşkan dikarin "yekser" bin. Di vê rewşê de, guhertinên Tcl-ê herdem tevî tevgerên Tcl.

Ji bo nimûne, emrê jêrîn bi bi celebên laşên jêrîn ve girêdayî ye: Dema ku ^ Z tê xistin, Hêvî hêvî ye. (Ala ala -reset tengahiyên termînal re vedigire.) Dema ku ^ A ve hatîye veguhestin, bikarhêner bikar anîne "tu teşopî kontrola-A" binivîse û pêvajoya ^ ^ A şandiye. Dema ku $ dagirkirin, bikarhêner dahat dibîne. Dema ku ^ C banged, hêvîdar e . Heke "foo" ketiye, bikarhêner "bar" dibîne. Dema ku tengahiyê ye, hêvîdarê wergêrker bi kurt ve dike.

CTRLZ \ 032 saz kirî {-reset $ CTRLZ {mirin-darizandin-STOP [pid]} \ 001 {send_user "ve girêdayî ye. şandin "\ 001"} $ {send_user "Dîrok [demjimêrek [demjimêr]]."} \ 003 foo {send_user "bar"}}

Di nav pêlavên cil-body de, strên di heman demê de ew bi armanca lîsteyê têne kirin. Girêdanên ku bi partî bi hev re hevdîtin ne, ne pêvajoya heyî ya ku di pêşiya pêşerojê de têne şandin. Heke karek tête navnîşan kirin ku hêj nikare mûçek nabe, tenê beşek strîngê wê pêvajoyê bişîne ku nikare nikare mûçek din. Bi vî awayî, şemikên ku perçeyek ji meylên partiyên berbiçav têne piştevan dikarin piştevanî bibin, heke strênên bingehîn ku bi hewl didin bi dawî dibe.

Bi rêkûpêk, mêjûya bêdeng rast e ku bi kartên şoreş e . (Bêguman, fermana hêviya hêviya bi rêbazên cîhanê bikar tîne.) Flag of -ex dikare ji bo pergalên parastina ku ji bila alîgirên li alî veguhestin ve tê bikaranîn bikar anîn. Her tiştek bi destpêkê "-" divê dest bi vî awayî parastin. (Hemû strêner bi destpêkê "-" ji bo bijartinên pêşerojê vekirî ne.)

Ala alîgirên ku-ê wekî nimûneyên rêjeya regexp-şirovekirî tête hêz kirin. Di vê rewşê de, pisîkên mêjû di nav guhertina guhertinê de bi heman rengî veberhênan têne hêvî kirin ku hêviya hêviya xwe hilbijêre di hilbijêrek cudahî de . Ala alavên wekhev piştgirî ye.

Eopeketek nimûne çalakiyek ku tête li ser pelê damezrandin. Pêvajek eofekek cuda dikare dibe ku ala ala -ûhnê li peyda bike ku di rewşeke nivîsandinê de heke ew eofek eşkere ye. Çalakiya navekî pêşniyaz e "vegera" ye, da ku ji hêla veguhastina veguhastina li ser EOF ve vegerîne.

Pêwîstek demjimêr dema demekê (duyemîn de) û çalakiyek ku destnîşan kir ku ji hêla cenazeyan ve nehat xwendin. Pêvajoya demjimêr li seranserî herî dawî ya pêvajoyê diyar kirin . Vebijêrkek navekî tune ye. Di "demjimêr" de (guherînek ji hêla hêviya gumankirinê) ve di vê demê de bandor nîne.

Ji bo nimûne, daxuyaniyek jêrîn bikar bikaribin bikarhênerên autologout bikar anî ku ji bo demjimêrkek tiştek nayê nivîsandin, lê kî ku hîn jî pergalên pergalê digel:

têkilî -input $ user_spawn_id demjimêra 3600 vegerandina -output \ $ spawn_id

Heke nimûne gotinek null , û nulls destûr têne (ji hêla jêbirinê jêbirin_nulls ), laşê peywendîdar heke eger yek ASCII 0 yek heval be. Ew ne gengaz e ku 0 bites bi rêya glob an an jî rêjeyên rêjeyên bi hev re bihev bikin.

Pêşniyarek rengek bi ala ala -write dibe sedema sedemên têkiliyê (spawn_id) da ku ji bo spawn_id vekirî ye ku pîvanê (an jî eof) digelhev bike.

Çalakî wekî nerazîbûn û berdewam ji sedemên avakirina rêbazên kontrola (ango, ji bo pêç ) ji bo rêkûpêk pêk tê. Lê dîsa veguhestina sedemên veguhestina wê bangê xwe dike, lê dema ku nehêle nehêle dibe ku ji bo vegera xwe ya banga xwe veguhestin. Ji bo nimûne, eger "pê foo" veguhestin ku paşê çalakiya însanê xeletî kirin , paşê fu dê vegerin. (Ev wateya ku heger pêwendiyê bangî veguhestina bi awayekî veguhastî veguhastin dê ji ber veguhestina berfireh , lê dema ku nehêle wê dê bibe sedema têkiliyê da ku bangê wê.)

Di dema pêvajoyê de , pergala raz tê bikaranîn da ku hemî celeb dikarin bi pêvajoya heyî veguherînin . Heke pêvajoya niha nayê destnîşankirinên kontrola kar bistînin, ew ê bisekinin eger ev nîşanek sekinî şandin (bi destê default ^ Z). Ji bo vê veguhestina, nîşanek berdewam bişînin (wekî "bişkoka -CONT"). Ger hûn bi rastî bixwazin SIGSTOP bi pêvajoya vî awayî (ji aliyê ^ Z) ve bişînin, yekem csh spawning û paşê bernameya we digerin. Heke din, eger hûn bixwazin SIGSTOP bişînin Bi xwe hêvî bikin, yekem ji bo wergirtina telefonê (dibe ku ji hêla karaktera revê) tê bikaranîn, û paşê ^ Z.

Ji bo ku ji bo wergirtina navdar û wergirtî bi hevpeymanên dagir dike, ji bo string-body pairs bikaribin wekî şehrek bikar bînin. Mode-termînalê berê berê tête bikaranîn, ku bedena bedenê laşê darvekirin.

Ji bo lezgehan, çalakiyên bi riya pêşbazê di default de derbas dikin. Ala -reset alavê termînalê bi veguherî berî veguherandibû veguherîne (mirinê, bi awayekî vekirî, vekirî). Têbînî ku krîterên ku veguherîna moda vekirî tête navnîşan dibe ku wusa dibe (wesayîtek xirab a şofalê termînalê li ser hin pergalên). Sedema tenê ya ku bikar tîne -reset e ku eger çalakiya we di çarçoveya paqijkirinê de tê de girêdayî ye.

Ala ala alîgirên xweş dike ku paşnavê jêrîn bi paş pêvajoyê re bi hev re bi hev re bi hev re bi hev re çêkiriye ku wekî her kesayetiyê xwendin. Ev dibe ku dema ku bikarhêner hewce bike ku ji bo bersivên hûrgelên tûjî re bisekînin bibînin.

Heke nimûne ev eşkere dike lê dawiya dawiyê naxwaze, celeb pêvajoyên spawned şandin. Ger pêvajoyek spawned wê ew eşkere dike, bikarhêner dê du caran celeb bibînin. -echo tenê di rewşên ku dişibîne ku bikarhêner nikare nimûne nimûne nerast e. Ji bo nimûne, têketina jêrîn ji rftp e, ku veguherînerê-ftp scriptê, ku bikarhêner tête ku bikarhêner g ~ ~, p, an jî l, navnîşan bike, binivîsin, an jî lîsteya niha ya nû ve lîsteya lîsteyê bike. Ew ji hêla FTP-yê gelemperî ne dûr in, ew e ku bikarhêner nabe ku ~ tiştek din binivîse, ji bilî çewtî, di vê rewşê de, ewê bi tenê encama vê yekê encam bibînin.

têkilî {-echo ~ g {getcurdirectory 1} -echo ~ l {getcurdirectory 0} -cho ~ p {putcurdirectory}}

Ala -nobuffer alavên ku di bin pêvajoya hilberê de wekhev têne xwendin.

Vê gengaz e ku hûn dixwazin ku bernameyek bernameyek paşê bifikirin. Ji bo nimûne, jêrîn dikarin bikar bînin ku çavdêriya ku mirovek derman e (modemên Hayes-style). Her cara ku "atd" tê nîşandan, şîfreyê berbi rêzê têketin.

Pêş lognumber {{{interact -nobuffer -re "(. *) \ r" veguhastina $ log "[demjimêrek [clock sax]]: $aled_out (1, string)"} tête girêdan -nobuffer "atd" lognumber

Di dema pêvajoyê de , berê bikar anîna log_user bête avêtin. Bi taybetî, têguhastin wê hilberîna xwe hilweşîne (hilberîna standard standard) ji ber ku ew eşkere dike ku bikarhêner naxwaz ku bi blindek ve girêdayî ye.

Li ala ala dibe ku ji bo pêvajoya niha ya pêvajoyê de her du yekemên pêlavên key-key têne bikaranîn. Ev dikare bibe, ji bo nimûne, gava ku bi mêvandarên ku bi karanîna neçandî bişîne di rûniştina telnetê de bişînin.

Bi veguhastin , pêvajo pêvebirin ku bikarhêner bikaribin ku sten û nivîsandina xwendina xwe ya pêvajoya hêviyê bixwînin. Li -u- al-flag (ji bo "bikarhêner") ji bo bikarhênerên ku bi navê wî re behsa nîqaşê vekirî ye (ji bo bikarhênerek veguherî dike) ye.

Ev pêvajoya du pêvajoyên ne girêdayî dike ku bêyî hevpeymanek zelal eşkere bibin. Ji bo alîkariyê di debugekirinê de, her demekarên hêvîdar dê her tim her tim li ser stderr bike (an jî ji bo hin agahdarkirina têketinê û danûstandinên diyarkirin). Ji ber heman yekê, biryareke wergêr dê bi awayekî stdin re bixwînin.

Ji bo nimûne, parçeyek jêrîn pêvajoyek têkildarî dike. Piştre ew bikarhêner bikarhêner (ne nîşanî), û bi dawiyê du hev re ve girêdayî ye. Bêguman, her pêvajoyê dikare ji bo têketinê veguherîne. Şelek, ji bo nimûne, dê bikarhênerê bikar bê bêyî bêyî hesabê hesab û hesabê kar bikî.

login log set $ spawn_id spawn tip modem # dial ji derveyî bikarhêner # bikarhênerê ve girêdayî ye ku têkilî -u $ login

Ji bo pêvajoyek piraniya pêvajoyê bişînin, lîsteya her spekeya lîsteyê ji ala alîyê ala- aput-ê ve binivîse . Pêdivî ji bo komeke hilberîna hilberên îdeolojî dikare lîsteya îdona spawnê ji hêla ala alîgirên yek-anî ve tê diyar kirin. ( Pêwîste herdu forma û -output dikare di forma heman alî de wekî ala -i ala di hêviya hêviya hêviyê de binirxîne, bêyî ku her_spawn_id ne di nav pêwendiyê de ye .) Hemû alên û alavên jêr (yan nimûne) ala ala xuya dike. Heke bêpêşandir xuya dike, -output im "-input $ user_spawn_id -output". (Bi vî rengî, bi şêweyên ku ne xwedî nexşîne .) Ger heger yek -înputek diyar e, ew bikarhêner $_spawn_id overrides. Heke duyemîn -înûra diyar e, lê ew $ spawn_id dihêle. Hinek alîgirên hûrgelan dikarin diyar kirin.

Her du pêvajoyên dakêşên pêvekirî yên ku ji bo hilberên xwe yên wek $ spawn_id û $ user_spawn_id (di reverse) de diyar kirin. Heke ala ala -input xuya ye ku ala ala -tûpûyê ye, hûrgelan ji vê pêvajoyê vebirin.

Li ala ala -i- ê ji bo alavên spune_id re veguherîne dema ku alîgirên din- alavên din - anjî bikar anîn. Ala al-A-flag al-a-flag im

Dibe ku pêvajoyên ku bi bi rêya bikaranîna nermalavên nerastî yên bikaranîna veguherîn ve girêdayî ye. (Di beşa rasterastên spandin yên di beşa li ser biryara hêviyê de têne dagir kirin.) Li alî -u -u, -înput, pişk, an-êputên nifşên rasterast bêne diyar kirin.

wergirt [args]
dibe ku bikarhêner bikar bîne navendî ji bo pêşniyarên hêvî û Tcl ji bo mebesta xwe da. Di encamê de her encamê çap kirin.

Çalakî wekî nerazîbûn û berdewam ji sedemên avakirina rêbazên kontrola (ango, ji bo pêç ) ji bo rêkûpêk pêk tê. Lê dîsa veguhestina sedemê wergirtina wergirtina ku ji nû ve bangê xwe dikeve, lê dema ku nexwende ji bo wergirtina ji bo veguhestina xwe veguhestin. Ji bo nimûne, eger "pêş foo" tê wergirtin ku wergirtterê ku paşê kiryarê çalak kirine , navdar_newn , paşê foo dê vegerin. Hûn biryareke din ji bo wesayîtên nû digerin wergirtin wergirtin.

Bi rêkûpêk, bi lez tête du pîvanan. Yekemîn yekemîn hebê kûrahiya nirxandina nirxandinê (ango, çiqas Tcl_Eval tê gotin). Duyemîn anteger nasnameya Tcl dîrok e. Bi lezgehên ku ji hêla prosediyekê ve diyar dike ku "prompt1" tê gotin, ku nirxê vegera paşîn bêtir be. Heke daxuyaniyek gotinan, parans, pişk, an kursî, lezgehek navîn (ji hêla "default" +> ") ve hate nûkirin. Bi lezgîniya duyemîn dikare bi rêbazek pêvajoyek bi navê "prompt2" tê gotin.

Di dema dema wergirtinê de , moda paqijkirî tê bikaranîn, heke heger telefonê wê pîvanê rawestî bikar anîn.

Heke stdin girtî ye, dê wergirtî dê heta ku ala alî tê bikaranîn, di rewşê de paşê armancê tête kirin.

log_file [args] [[a] file]
Heke pelê nameyê tê dayîn, log_file dê di pelê de (veguhastina vê qala destpêkê) veguherîna veguhertina rûniştinê. log_file dê betal bike ku eger tu armanc nehatiye dayîn. Doska têketinê yên berê ya dawî ye.

Di şûna navê de, nasnameya pelê Tcl-ê dikare bi alîgirên al-anavê ve- an vekirî ve têne dayîn . Vê yekê wekî commanda spawn e . (Ji bo bêtir agahdariyê bibînin.)

Hêzên ala yên ku-ê tê têketin tête kirin-ê ji hêla fermandarê log_user ve hate zordar kirin.

Bi veguherî, birêveberê log_file ji bilî pelên wan derxistin, lê ji bo hewceyê ku bi karibe veguherîna veguhestinê û çend caran di rûniştineke yekem de derbas dibe. Ji bo pelên truncate, ala -noappend bikar bînin.

Ala alî -info dibe sedema log_file ji bo argûmanên herî ne-agahiyên paşîn ve vegerin.

log_user -info | 0 | 1
Bi veguhastinê, bişîne / hêvîkirina danûstendinê bi stdout tête tête tête kirin (û dema logfile vekirî ye). Têketinê ji bo stdout veguherîn "command_user 0" ji hêla "log_user 1" re veguhastin hate qedexekirin. Logging to logfile unchanged.

Ala ala -info dibe sedema log_user ji bo argûmanên herî ne-agahdariyên paşîn ve vegerin.

match_max [-d] [-i-spawn_id] [size]
Pîvana pargîdan (definisyonên) bi hundir tête bikaranîn. Ne bi rêjeya rêjeyê, pîvana niha ya nû ve hatî vegerandin.

Bi ala al- , pîvana default default is set. (Destpêk yekem 2000 e.) Bi ala -ya-ê, pîvana ji bo navê spawn id hatiye dayîn, nebe ku ew pêvajoya niha dabeşkirî ye .

overlay [- # spawn_id] [- # spawn_id] [...] bernameya [args]
"bernameyek" bernameyek li ser cîhê hêvîdariya bernameyê ya ku niha tête qedexe dike. Peyvên neheq ên neqen hêzek navnîşa navîn ya ku hingê ew şeyek têketinê bû ku hifen hêz dike. Hemû spawn_îdên ku ji wan re behsa navnîşan têne girtin. Ev li ser nasnameyên navnîşên navên mapped têne kirin.

Spawn_ids ji bo bernameya nû ya mîras ji bo nasnameyên pelan veguherandin. Ji bo nimûne, rêza jêrîn şikir dike û destûrê dide ku bi pêvajoya niha ve kontrol dike - - master, şîretek xeber bike.

overlay -0 $ spawn_id -1 $ spawn_id-2 $ spawn_id chess

Ev ji "interact -u" ji hêsantir e, lêbelê, ew pêkanîna pêwendiya bernameyek programmedî dike ku ji ber pêvajoya hêvî ye bêtir di kontrola xwe de feda dike.

Têbînî ku tu termînalek kontrola tête dayîn. Ji ber vê yekê, eger hûn têkildarî standardê vekişînê an jî jêbirin, bernameyên ku kontrola karê kar bikin (şeys, têketin, hûrgelan) wê neyê rast kirin.

parity [-d] [-i spawn_id] [value]
diyar dike ku çi wekheviyê divê ji derveyî derveyî pêvajoyên spawned. Ger heqê nîv e, hûrgelê veşartî ye, nebe ew nehêle. Bi nirxên nirxî , nirxa niha ve hatî vegerandin.

Bi ala -d- al-ê, nirxa nirxa nermalav e. (Destnîşana destpêkê 1 e, ango, wekhevî nehêle.) Li ala -ya-yê bi nirxa nirxê navê spawn id hatiye dayîn, ne jî ev pêvajoya niha ya amade dike .

remove_nulls [-d] [-i spawn_id] [value]
diyar dike ku nulls ji hilberandina pêvajoyên spawned ve berî veberhênanê têne girtin yan jî hilberînin an jî li hêviya hêvîbûnê an jî têkiliyê . Heke nirx e 1, nulls jêbirin. Heke nirx 0 ye, nulls nayê jêbirin. Bi nirxên nirxî , nirxa niha ve hatî vegerandin.

Bi ala al- , nirxa nirxî ya xuyakirin. (Destnîşana destpêkê 1, e, nulls jêbirin.) Bi ala -ya-ê, nirx ji bo navê spawn id hatiye dayîn, ne jî ew ji bo pêvajoya niha vekirî ye .

Ma çi an jî nullên jêbirin têne veguhestin, Heke hêvî dikin ku ji hêla log û stdout re bêdeng binivîse.

string-flags] bişînin
Pêvajoyê ya pêvajoya niha bişîne. Bo nimûne, fermana

"cîhana hello \" re bişînin

karek, helloworld ji bo pêvajoya heyî ve bişîne. (Tcl emrê çapê- printf -like (tête format ), ku dikare dikare mûzgehên peldankan ava bike.)

Vê gavê yekser şandin şandin, lê belê bernameyên ku bi qeydkirî-ê vekirî-ê veguhastin veguhestina nameyek veguhestinê neyê xwendin. Navekî veguhestinê "" r "tê nîşandan.

Hêzên ala armancên din ên ku ji ala alî veguherînek wek şermezar kirin. Her tedbîre ji hêla "-" an jî bi rastî ala mîna xuya dibe. Ev yek mekanîzmayek ewlehiyê pêşkêş dike ku ji bo ku bi guftûgoyî mîna alayên mêvan binêrin bêyî tûjên curavên diyar bikin. (Hemû strêner bi destpêkê "-" ji bo bijartinên pêşerojê vekirî ne.)

The flag in -i denies that string will be named spawn_id. Ger spawn_id user_spawn_id e, û terminal di moda raweyê de, string di nûçeyan de ji bo vegerên -nûline sequel têne wergerandin, da ku ew xuya dibe ku ew termînal di moda paqij bû. Ala ala vê translationê qedexekirin .

Ala ala ala null ( şertên 0 bytes) bişîne. Bi rêkûpêk, yek xelet şandin. Anteger dikare peydakirina navgîniya peyivînan da ku nîşan bide ka çend nulls bişînin.

Ala ala -break çêbibe. Vê yekê tenê dibe ku hebûna spawn id ji hêla "aşkere-vekirî" vekirî vebûye cîhek vekirî ye. Heke ku hûn pêvajoyek wek pêvêde ditirsin, divê hûn konseya tip bikar bînin ku ji bo veguhestinê.

Hêzên ala yên ku ji bo hilberê "zûtirîn" şandin, ji ber vê yekê rewşeke gelemperî derkevin ku derheqê komputerê bêdawî ye ku ji bo mirovek çêkiriye, ku tu carî heman bêdeng neyê şandin. Ev hilber ji hêla hêla "send_slow" guhertinê ve tête kontrolkirin, ku lîsteya du elementan digire. Yekem yekem e-anteger e ku hejmarek bîteyên ku atomî bişînin. Hêza duyem e ku hejmareke rastîn e ku hejmareke hûrsên ku bi şandina atomî bişînin divê ji hev vegotin. Ji bo nimûne, "send_slow {10 .001."} Dê "bişîne -s" bişîne ku bi 1 millisecond di navbera her xortên dişibînin nav şandên şandin.

Hêzên ala yên -H-ê ji bo şewitandina mirovê wekî (hinek tişt) şandin. Mirovan wek demek dirêj di nav xemgîn de têne xuya kirin. (Algorîtm li ser belavkirina Weibull li ser veguhastin, bi guhertina taybetmendiya vê taybetmendiyê ve girêdayî ye.) Ev hilber ji hêla "send_human" veguherîna hêja dike ku ji lîsteya pênc pênc elementan pêk tê. Duyemîn yekem hêmanên demjimêr di nav sêlan de dema demjimêr navîn in. Yekemîn bi rêkûpêk tê bikaranîn. Ya duyemîn di peyva dawî de tê bikaranîn, da ku pausên paqij ên ku carinan di demên weha de têne çêkirin. Parametek sêyemîn pîvana ku li wir tête .1. Bêguman 0 bi înfilîzî ye. Du du parameterên dawîn, bi awayek, herî kêm û herî zêde destwerdana interarrival in. Bi kêmanî û maxa herî dawî û "clip" were bikaranîn. Heke ku herî kêm û herî mezintir nirxên gelemperî nirxa herî dawîn dikare ji nirxa nirxê cuda ye.

Wekî mînakek, emrê jêrîn a tîpîstek bi lez û hevgirtî veguhestin:

bişîne send_human {.1 .3 1 .05 2} send -h "Ez birçî ye. Me em xwarinê bikin."

Dema ku jêrîn ji dest pê ve bêtir jêrîn bêtir bêdeng e:

send_human set .human {.4 .4 .2 .5 100} send -h "şevê şevê qenc!"

Têbînî ku çewtî ne simul dikin, her çiqas hûn dikarin şaşkirina şaşkirina xwe bi rewşên xelet û şertên ku di şandina argûyê de bi şertên xwe re şert bikin.

Li alîgirên şandina sendîkên şandin, ji bo şandina şikandina şandina, ji bo hilberîna hêdî û derheqê mirov-şêwirmendiyê bi awayekî mutually taybet e. Tenê tenê dawînek diyarkirî dê bikar bînin. Wekî din, argûkek tunebûyî bi alên karsazên şermezar an şikilên şandina navnîşan werin diyar kirin.

Ev fikrkek baş e ku pêşiya pêşîn pêvajoyek bi hêviya xwe bişîne . hêvî dikim pêvajoyê dest pê bikin, dema ku şandin nikare. Bi taybetî, eger eger yekem bişîne pêşiya pêvajoyê dest pê dike, hûn rîska ku hûn daneyên çavdêriya xuya kirin. Di rewşan de ku bernameyên înfaktîv bi lez nayê destnîşankirin, hûn dikarin ji ber derengî bişînin ji ber ku di:

# Ji bo ku ji bo veguhestina hackers hênêrîn didin, # ev sîstema ji bo şîfreyek derveyî neyê xistin. # Wê ji bo 5 seetan ji bo bicîhkirina rêbazê gelemperî

exp_send jî ji bo şandina sendalê ye . Heke hûn Dixwazin Expectk an jî hin cûreyên din ên hêvîdariya li hawîrdora Tk, têne şandin TK ji bo armanca cûda cuda ye. exp_send peyda ji bo hawirdora enerjiyê tê dayîn. Wateyên din ên ji bo emrêdeyên din bişînin ji bo hêviyên din têne dayîn.

send_error [-flags] string
wekî şand e , lê ji bilî hilberîna pêvajoya heyî ya bêtir şîfre bişîne .

send_log [-] string
wekî şîfre ye , lê ji bila ku tenê pelê pelê têketî şandiye ( têketin log_file .) Daxuyaniya pelê vekirî tune heke argûyan têne red kirin.

send_tty [-flags] string
wekî şand e , lê ji bila hilberê pêvajoya niha ya pêvajoyê / dev / tty şandin.

send_user [-flags] string
wekî şand e , lê ji bilî hilberîna pêvajoya heyî ya bêtir hilberîn e.

çiravên xewê
dibe ku pirtûkan ji bo hejmarên duyemîn ji bêdeng bikişîne. Duyemîn dikarin hejmara hejmarek be. Têkilî (û bûyerên TK-ê ku hûn ji Expectk tê bikaranîn) pêvajoyê têne kirin û hêvî kirin.

spawn [args] program [args]
pêvajoya nû ya nû "bernameyê arges" dike. Stdin, stdout û stderr girêdayî hêvî ne girêdayî ye, da ku ew ji hêla emirên din ên din hêvî bixwînin û nivîsîn. Têkilî bi nêzîk veqetandî ye yan ger pêvajoya xwe nasnameyên pelê vekirî.

Dema ku pêvajoyek ji hêvê dest pê dike , pîvana spawn_id tête nivîsînek e ku tête pêvajoyapêvajoyê . Pêvajoya spawn_id tê gotin ku " pêvajoya niha " tê dîtin. spawn_id dibe ku bi xwendin an nivîsîn, bi bandorê kontrola kar bikin.

user_spawn_id variant globale ye ku di descriptor de ku bikarhêner bikar tîne. Ji bo nimûne, gava ku spawn_id bi vî rengî vekirî ye, hêvî dike ku mîna hêv_user behs dike.

. Error_spawn_id variant global e ku di descriptor de ku çewtiyek standard e. Ji bo nimûne, gava spawn_id bi vî rengî vekirî ye, behave wekî send_error bişînin .

tty_spawn_id variant globale ye ku di descriptor de ku tête / dev / tty tête. Heke / dev / tty nayê hebûn (wek ku di cronekê de , an an jî pirtûkê veşartî), hingê tty_spawn_id ne diyar e. Ev dikare wekî ceribandin

Heke {{info vars tty_spawn_id]} {# / dev / tty heye} nabe {# / dev / tty heye. dibe ku hûn bi cron, batch, an jî nivîskî}

spawn vedigire ya pêvajoya UNIX. Heke pêvajoya hilweşandiye, 0 vegeriya. Peyva cûda (xulam, navê) di nav cîhê pty-slave de hate diyarkirin.

Bi rêkûpêk, spawn bi navê navnîş û nîqaşan eşkere dike. Ala ala -noecho alî ji vê yekê re rawestîne.

Ala ala -so-kan ji bo pêvajoyek hilberîna hilberê ve tête veguherandin. Ev li ser hemû pergalên piştevanî ne.

Di hundurê de, spawn pty pisek tê bikaranîn, heman rengî wekî wekî tund bikarhêner e. Ev hîn jî pêşî ye ku hemû pergalên "sane" ne (li gorî stty (1)). Heke ku stît_tîv_init diyar e, ew di şêweya stît arguments de wekî veguhertina din ve tê gotin. Ji bo nimûne, "raw stty_init set" dê bibe sedema termînalên pêvajoyên din ên ku di moda rawa de dest pê bikin. -nottycopy destnîşan kir ku li ser bingeha bikarhênerê bikar anîn. -nottyinit destûra "sane" skips.

Bi gelemperî, spawn piçûk demek kurt dike. Heke hûn difikirin ku hejmara demek girîng e, lê dibe ku dibe ku pûtên ku têne darizandin. Hinek ceribandin li ser ptys têne kirin ku pêvajoyên erênî yên dûr bistînin. (Ev 10 saetan per pûçek perçê bibin.) Bi hêvîdariya ku D-ê bijarte dê dê hêvî be ku dewletên gelemperî di odeyên cuda de nebin. Heke hûn nekin pêvajoyên ku van ptyan ve girêdayî ne, hûn nikarin veguhestin bibin.

Ger bernameyek bi serfiraz nabe ku çalak (2) nayê nekirin (mînak dema ku bernameyê nîne), peyamekek çewtiyek dê paşê veguhastin an jî hêviya hêviya ku gava bernameyê şandiyek çewtiyê wekî hilberandina çewtiyê hilberandin. Ev pêvajoya encamên xwezayî yên pêkanîna spawnê ye . Di navxweyî de, pişkên spawn, piştî ku pêvajoyek birêvebirin tu rêbazek bi pêvajoya hêvî ya esasî ya bihêle ne ku bilî pêwendiya bi spawn_id re biaxivin.

Ala-The- open flag the next argument that wekî nasnameya Tcl-ê (wekî, vekirî ve vekirî ve tê şirovekirin) tête şirove kirin.) Dema spawn id dikare wê pêvajoyê bête bikaranîn . (Divê belgeya pelê divê bête bikar anîn.) Ji bo ku hûn bêyî pty pîvan têne bikaranîn, cîhazên raweyên raweyên, pelan, û pipeline derman bikin. 0 hat veguhestin ku pêvajoyek pêwendî nabe. Gava ku pêwendiya pêvajoya spawned vekirî ye, so ku nasnameya Tcl pelê ye. Ala -leaveopen- flag-like- open- like-like- it-like-open- like-like- it-like- itaveopen causes the identifier file closed off even after the identifier-identifier is left open- up .

Ala ala Pîroz dibe sedema ptyê vekirî ye, lê tu pêvajoyek nedikir. 0 hat veguhestin ku pêvajoyek pêwendî nabe. Spawn_id wek normal e.

Pîvana guherîn (xulam, fd) bi nasnameyeke pelê ve girêdayî ye ku pisê pis . Ew bi karanîna "nêzî -slave" tê girtin.

Navên alî -ignore navên nîşekek ku di pêvajoya spawned de nebawer kirin. Wekî din, nîşanên raveya rêbazê dakevin. Cenazeyan wekî ku di fermana trapê de navê wan têne kirin, lê bila her cîrek hewce ne ala ala cuda.

asta strace
berî daxuyaniyên jêrîn ku berî darvekirinê têne çapkirin. (Fermandariya Tclê ya celebên cûrên cûrên cûda nîşan dide.) Asta diyar dike ku çiqas barkirina barkirina balkêşê. Ji bo nimûne, biryara jêr hêvî dike ku dema 4-asta yekem bangî, lê yek ji wê re ye.

hêv -c "4" script.exp

Ala alî -info dibe sedema şikandina paşnavên herî ne-agahiyên paşniyet vegerin.

stty args
Guhertoyên trîmên guherîn di heman demê de ji bo fermana stît external.

Bi rasterast, termînelkirina kontrolkirinê tête. Gelek termînal dikarin ji hêla veguhestinê ve were destnîşankirin "Ji bo encamên fermî ev vedigere." Heke ku statuyek nayê daxwaz kirin û termînatoriya kontrolkirinê tête, statuya berê ya taybetmendiyên raw û gavên ku di paşê de paşê bêne vegerin têne vegerandin bi fermandarê bikar anîn.

Ji bo nimûne, argûyên raw û hişk di terminalê de moda raweyê derxistin. Pevçûn- an jî paqij kirin ku terminal di moda paqij de tête kirin. Armancên gengaz dike û -echo bi awayekî berbiçav û rêbazek nermalavê bistînin.

Mînakek jêrîn diyar dike ku çawa çawa bi awayek demokrasî bête asteng kirin. Ew dikare bikarhênerên din ên bikarhêner-ê bikarhêneran bikar bînin ku ji wan re şîfreyên pêvebirinê dûr bikin. (Li ser vê yekê binivîse ser vê yekê binivîse BİXWÎNE.)

stty -echo send_user "Şîfre:" hêv_user -re "(. *) \ n" şîfreya $ hêv_outê veke "(1, string) stty echo

pergala argak
argak dide ku (1) wekî input, wek ku ew wekî wekî fermî ji termînal hatiye nivîsîn. Hêvîdariya ku di şelê de qedexe dike hêvî dike. Rewşa vegera ji sh shê hatiye rêbaz kirin ku rêveberiya statuya xwe vegera xwe dike.

Bi berevajî biryara ku ji bo veşartinê veguherîne û veşartî bi pergalê re , pergalê tune ne redirection (ji bilî ku bi hêsanî nîşan dide). Ji ber vê yekê, ew e ku bernameyên karanîna ku bi rasterast bi / dev / tty re biaxivin. Ji bo heman yekê, encamên pergalê di nav logê de ne qeyd kirin.

timestamp [args]
vegerandina timestamp. Ne bi armancên din, ji hejmarê veguhestinê hejmareke sêlan vegeriyan.

Ala ala -format a stratek tête ku tê vegerandin lê li gor veguherînên li gorî POSIX qaîdeyên ji bo tengahiyê têne çêkirin. Ji bo nimûne% an navê bi navê rojane ya kurtkirî (wekî, Sat) ve hatî guhertin. Hin hene:

% a rojek kurtkirî ya% A ya hefta rojane navê% b bi navê% B ya hejmara mehê% B rojane ye: Wed Oct 6 11:45:56 1993% d roja meha (01-31% H hour (00-23)% saet (01-12)% j roj (001-366)% m meha (01-12)% M deqîqe (00-59)% p an an jî% ê duyemîn (00-61) % u roj (1-7, roja yekem ê duşem ê duşem ê yekemîn e)% U (00-53, roja pêşîn yekem hefteya yek yek e)% V hefteya (01-53, ISO-8601-style)% w day (0- 6)% W hefteya (00-53, roja yekem a yekem hefteya yekemîn e)% x dema demjimêr di xane: Wed Oct 6 1993% X di dema: 23:59:59% y salî (00-99) % Y salî di sala 1993'an de Z% z zone (an tiştek nabe ku nirxandin)%

Tiştên din jî ne diyar in. Nîşanên din dê bêne derxistin. Tenê C locale piştgirî ye.

Ala ala alîgirên ku ji hêla çavkaniya ku ji forman ve tê bikaranîn, hejmareke hûrdûrên çend sondên din tête kirin. Dibe ku, wextê niha tê bikaranîn.

Hêzên ala -Gmt ê hilberîna timestampê da ku ji bo demjimêr gengalê GMTê . Ne ala ala, demjimêra herêmî tê bikaranîn.

trap [[command]]
dibe sedema biryareke ku li ser serîlêdana pêşniyarên yekgirtî li darvekirin. Ferman di çarçoveya cîhanê de hate darizandin. Ger emrê nenas be, çalakiya sembolê vegerîne. Heke ku emrê rêza SIG_IGN e, nîşan têne guhartin. Heke ku emrê rêza SIG_DFL e, ev nîşana encamên default-ê ne. Signalên an yek an nîşanek an jî lîsteyek navnîşan e. Cîhan dikarin ji hêla sînor (3) nimûne an sembolîk diyar kirin. Pêşniyarê "SIG" pêşve bibe.

Bi ti argûyan (an jî nîqaş -number), trapek hejmarê sembolê ya niha niha darve kirin.

Ala -code ala kodê vegera fermî dike ku li kîjan kodê Tcl bû ku vegera ku dema sereke bi dest bi dest ve digerin ve vegerîne.

Ala -interp flag dihêlin ku emrê ku hûn bi karanîna şefê anî dema ku biryara xebatê dest pê didin xebitandina wergirtina xebatkaran tête kirin.

Ala -name ala nemaze ku fermana trapeyê da ku navê navnîşa navnîşa trajeya paşerojê bistînin.

Ala -Max ala dibe ku fermana trapê ji bo hejmarê herî nîşana herî mezin vedigire .

Ji bo nimûne, emrê "trap {send_user" Ouch! "} SIGINT" "dê" Ouch! " Her cara bikarhêner bikar tîne ^ C.

Bi rêkûpêk, SIGINT (ku bi gelemperî bi hêla çapemeniyê ^ C) ve tête hilberandin û bibe sedema sedemên mecbûrî hêvî dikin ku derkeve. Ji ber vê trapê ye, ku ji hêla pêşnavê ve hatî çêkirin ve hatî çêkirin.

derveyî trapê {SIGINT SIGTERM}

Heke hûn di -xbarê -D ala bikar bînin destpêkirina debugger, SIGINT ji bo destpêkirina debugger dest pê bike. Ev ji tora jêrîn e:

trap {exp_debug 1} SIGINT

Ne trapek debugger bi veguherîna hawirdora hawirdora EXPECT_DEBUG_INIT veguherîne ji bo fermana nû ya nû.

Hûn dikarin, bêguman, herdu jî bi tenê veguherînin bi rêzikên cerdevanan re bi serpêhatiya xwe ve zêde bikin. Bi taybetî, eger te ya "SIGP derketina xwe ya derveyî" ye, ev ê wê paşê paqijkirina debugger. Heke hûn dixwazin ku bikarhênerên ku ji bo pêşî ve debugger digerin kêrhatî ye.

Heke hûn dixwazin trapên xwe li SIGINT xwe diyar bike, lê hê jî dema ku diçin ku di dema debugger de derbas bike, bikar bînin:

heger {! [exp_debug]} {trafên xwe ya şewitandinê SIGINT}

Alternatîf, hûn dikarin bi karbidestek hinek nîşanên din bikar bînin.

trap dê ê ku hûn ji hundurê hêviya hundurê têkoşîna kar anîn. Biryara jêderk vekirî SIGALRM bi SIG_IGN (venegerin) dide. Hûn dikarin dema ku hûn di dema emirên paşî de neqil bikî ew bikaribin.

Ji bo bêtir agahdarî nîşan bide (3).

benda [args]
heta ku pêvajoyek birçîbûnê (an pêvajoya niha heke navekî navekî navekî nayê dayîn) qedexekirin.

Bersîv bi berevajî bisekine nav lîsteyek çar hejmaran vegerîne. Yekemîn yekemîn paqij e ku pêvajoyek ku li hêvî dikir. The second integer is identical spawn id. Dema sêyemîn sêyemîn e ku eger çewtiyek pergala xebitandinê hate çêkirin, an jî 0. Heke ku sêyemîn sêyek bû bû, çaremîn anteger pêvajoyê ji hêla paş ve vegeriya statuya ye . Heke ku sêyemîn hebek 1 bû, çaremîn integer nirxa çewtiyê ye ku ji aliyê pergala xebitandinê ve ye. Çewtiya çewt a globalCode di heman demê de ye.

Hûrgelên din dikarin li dawiya vegera vegera ji benda . Yekem pênc elementek alternatîf çiqas agahdariyê agahdar dike. Niha, tenê nirxek yekane ku ji hêla vê hêmanê ye, zarok di du nirxên din de navê navnîşa c-style û şirovek kurt a kurt e.

The flag li ser pêvajoyê ku pêvajoyek bi navê spawn_id li benda rawestî (neserê pêvajoyê ne ) ragihand. Inside a SIGCHLD handler, ew e ku pêvajoyek ji bo pêvajoya ku ji hêla spawn id-1 bikar tîne rawestîne.

Ala ala -êleyê dibe ku benda bilez bi zû nîşanî ku benda biserkeftî ye. Dema ku ev pêvajoyê (paşê) derkeve, ew ê bêyî hewceyê bêyî ku hewceyê pêdiviya balkêş e.

Derhênerê bendê jî dibe ku ji bo pêvajoyek tedawî bikaranîna armancên "-i -1" bisekinin. Bi pêvajoya wê ya bi pêvajoyên spawned, ev yekem dikare li darvekirin. Ti kontrola ku pêvajoyek veguhestin tune ye. Lêbelê, nirxa vegerê ji bo pêvajoya idê tête kontrolkirin.

LIBRARIES

Dê hêvîdar e ku li pirtûkxane ji bo pêşniyarên lazimên li ser du pirtûkxaneyên damezirandin dizane. Ev ji hêla derhêneran ve hatine navnîşkirin têne navnîşkirinên xerîb û exp_exec_library. Her wateya wateya pelên ku bikarhênerên din dikarin bikar bînin bikar anîn.

pirtûkxaneyê de pelên architecture-independent container hene. exp_exec_library di pelên architecture-dependent de hene. Li ser pergalê we, herdu rêveber dikarin bi temamî vala bin. Hûnbûna pelê $ exp_exec_library / cat-buffer diyar dike ku ka / bin / kaxezên xwe yên bixweber veguherîn.

PRETTY-PRINTING

Wergirtina vgrind ji bo hêja-hêsankirina pirtûkên hêvîdar heye . Pêvekirina danûstandinên vgrind bi bi rêjeya belavkirina hêvî ve rast tê saz kirin, hûn dikarin wekî bikar bînin:

pelê vgrind-pelpect

EXAMPLES

Gelek ne diyar e ku çawa her tişt bi hev re tevlihev bikin ku pirtûka pirtûka têgotin. Ez ji te re vexwendin ku hûn bixwînin û nimûneyên di rêveberiya nimûne ya Dabeşbûnê de hêvî bikin. Hin ji wan bernameyên rastîn in. Hinek din bi awayek teknolojiyên hin taybetmendî ne, û bêguman, çend cot bi tenê hanê hûr hene. Fîlmona înstal a pêşveçûna van bernameyên zûtirîn heye.

Daxuyanên hêvî (BİXWÎNE BİXWÎNE BİXWÎNE) Berbiçav in. Gava hin belgeyên ku bi pêşniyarên pêşî yên hêvî yên pêşniyar têne bikar tînin, bi rêjeyên rêjîmê hîn hîn jî rast e û di nav vê rûpelê de zêdetir agahdariyê biçin.

CEVE

Dibe ku navnîşên navên navên nameyên hêvî bi şewitandin. Ji bo nimûne, şandina TK ji bo armancên cuda cuda ye. Ji bo vê yekê, piraniya emirên hêvî wekî "exp_XXXX" de jî hene. Ferman û guherîn bi "exp", "inter", "spawn", û "demaout" de dest bi desthilatdar nîne. Heke hûn hewceyê di navbera hawîrdewletan de hewceyê hewceyê navên navnîşên dirêjkirî bikar bînin.

Hêvîdariya nerazîbûnek lîberal ji bo scoping. Bi taybetî, guherînên bi rêzikên ku bi taybetî bernameya hêviya hêvîbûnê bixwînin, yekemîn ji çarçoveya herêmî digerin, û heke nehatiye dîtin, di çarçoveya cîhanî de. Ji bo nimûne, ev hewce dike ku hewceyê hewceyê ku "her demek global" hebe ku hûn her tedbîrên ku hûn binivîsin ku hêvî dikin . Ji alîyê din ve, guherînên guherîn her tim di çarçoveya herêmî de (heya ku biryareke "global" dagir kirin). Pirsgirêka herî normal ev dibe sedema dema ku pêvajoyek di pêvajoyê de derbas dibe. Outside the procedure, spawn_id no longer exists, lewma pêvajoya spawnê hêsan ji hêsantir ne tenê hêsan e. Ji bo "prune_id global" e.

Heke hûn nikarin hêza multispawning (i.e., pergala te pêdivî ye ku pergala te nayê hilbijartin (BSD * * *), dengdana (SVR> 2), ne jî tiştek wekhevî), Dê hêvî dibe ku di demekê de tenê pêvajoya yekane kontrol bikin. Di vê rewşê de, hewce ne ku spawn_id saz bikin , ne jî divê hûn pêvajoyên pêvajoyê bi rêve kirin û pêvajoya birçîbûnê dimeşînin. Wekî din, hûn ê nikarin ji pêvajoyên pir ji wan re hêvî dikin (wekhev bikar anî wek).

Parametersên termînal dikarin li ser pirtûkên mezin bigire. Ji bo nimûne, heke pirtûkek nivîskî nivîsand ku ji bo lêgerînê tête nivîsandin, ew ê heger ew eşkere dibe. Ji bo vê yekê, pîvanên termînal ên bi defaultê hêvî dikin. Mixabin, ev dikare ji bo bernameyên din ên bêhtir tişt çêbikin. Wek mînak, mînakek şehre dixwazin dixwaze mappên "normal" veguherînin: nûçeyên nû bi nûçeyên nûçeyên nûçeyan-vegerandina nûjen veguherînin, û eşkere qedexekirin. Ev yek dikare ji bo emacs bikar bînin ku li ser sînorê veguhastinê biguherînin. Mixabin, hêvî dikane vê yekê nirxandibe.

Hûn dikarin hêvî bikin ku hêvîkirina pergala xwe ya default default bike, lê divê hûn hişyar bimînin dema ku şîfreyan ji bo hawirdora nivîsandinê nivîsîn. Di rewşên emacê de, ji van tiştan de mîna xweşikên wekî xerîb û dawîn-ê-ê-gavên xwe biparêzin.

Fermanên ku armancên qebûl kirin, di nav lîstek yekane de (lîstikên hêvî û danûstendinê ) ji heurîstan re bikar bînin ku biryar bidin ka eger lîsteya rastînek yek an jî gelek e. Heuristic tenê dikare di rewşê de dema ku lîsteya rastî tê de argatek yek yek tê pêşniyarkirî ye ku bi gelemperî ve nermalav \ n e ku di nav wan de neheqên ne-whitespace di navbera wan de. Ev xuya dibe ku bêkêmahî nebe, lêbelê "-nobrace" tê bikaranîn ku ji bo argûkek yekane armanca yekane armanca wê tête kirin. Ev dikare bi kodê hêvîdariya makirîn-ê çêkirî tê bikaranîn. Bi vî rengî, hêza yekane armancên ku bi awayekî pir rengî / çalakiyê ve bêne destnîşankirin.

BUGS

Ew bi rastî tengahî bû ku bernameyek "sex" (ji bo "Smart Exec" an "Send-Exppect"), lê navgîniya qenc (yan dibe ku tenê tenê Pêwîtîzmîzmê) hilbijêre.

Li ser hin pergalê, gava çalek spî digire, ew guman dike ku nikarin nikarin ttyê lê belê her weha diçin. Ev tê wateya pergala te pergala mekanîzmîzmê heye ku ji bo qezenckirina kontrola ku hêvî nizane nizanin. Ji kerema xwe vebêje ka ew çi ye, û agahdariya vê yekê bişîne min.

Ultrix 4.1 (herî kêm nûçeyên dawî yên li vir) di demên 1000000 de bi hev re wekhev e.

Digital UNIX 4.0A (û versyonên din ên din) ji bo destnîşankirina SIGCHLD-ê if you define ptys naxwazin. Ji bo bêtir agahdariyê rûpelê grantpt bibînin.

IRIX 6.0 nikare pty destûr nayên rast kirin da ku eger hewldanên hewl bidin ku pty berê berê bikar anî ji aliyê kesek ve tê bikaranîn, ew nayê. Upgrade to IRIX 6.1.

Telnet (tenê di bin SunOS 4.1.2 4.1) de destnîşankirin eger TERM ne diyar e. Ev pirsgirêkek cron, li û şîfreyên cgi di nav de, ne ku TERM ne diyar e. Ji ber vê yekê, divê hûn bi eşkere vekirî binivîsin - bi vî awayî gelemperî neçar e. Wusa ku tiştek ji bo tiştek bistînin! Dibe ku ji bo piraniya dozên hûrgelan hebe.

env (TERM) set vt100

Tip (bi tenê BSDI BSD / OS 3.1 i386 di bin destnîşankirin) hiştibe eger SHELL û HOME ne têne kirin. Ev pirsgirêkek cron , li û şîfreyên cgi di nav de, ku ne ji van pevçûnan veguherîne nake. Ji ber vê yekê, divê hûn bi eşkere bi wan re diyar bikin - ji bo çi cûda gelemperî neçar e. Wusa ku tiştek ji bo tiştek bistînin! Dibe ku ji bo piraniya dozên hûrgelan hebe.

env (SHELL) / bin / sh set env (HOME) / usr / local / bin

Hin pêkanîna pêvajoya ptyan têne çêkirin, da ku kernel piştî 10 heta 15 sîwanan de piştî ku pêvajoyê pelê veguhestinê ve girêdayî ye. Ji vî awayî bernameyên mîna

xewna deryayê 20 salî hêvî dike

dê têkevin Ji ber vê yekê, ji bernameyên ne-anaktîf re bi rêvebirinê vebikin . Dema ku ev rewşên balkêş in, lê di pratîkê de min qet carî rewşê nebû ku di pêvajoya dawiyê de bi rastî rastî bernameyek interaktîkî dê ji vê reelê winda bibe.

Ji alîyê din, Cray UNICOS ptys piştî ku pêvajoya pelê veguhestinê ve vekişînek yekserek derxistin. Min ev xelet kir ku ji Crayê û ew li ser rastiyê dixebite.

Gelek caran di derengî û bersiva bersivê de hewce ye, wek ku gava ku têlekek tehfek tête guhertin UART pêdivî ye yan rêjeyên bara bîranînê digerin ku hûn digerin ku ji bo destpêkê / bendên bisekinin. Bi gelemperî, ev yek hewce ye ku ji bo duyemîn an du duyemîn xewna. Teknolojiyek xurttir e ku ji hêla pisporê amade ye ku veguhestina amadekar e amadekirin. Wek mînakek stratejiyên herdu bikar tîne.

"Speed ​​9000 \ r" bişînin; şewitandin 1 hêvî dike {timeout {send "\ r"; exp_continue} $ prompt}

trap -code dê bi ti emrê karekî ku di nav xewna Tclê de digire, wek xew. Pirsgirêk ev e ku di bûyera laşê de, Tcl kodên vegera ji hêla çalakiyên async ve dûr dike. Wek xemgîniyek e ku ala di ala qefê de saz bike. Piştre piştî zindanê (ango, xewê) zû li ala zû kontrol bikin.

Biryara hêvîbûnê ya hêvîdar neyê dîtin -Ne armancên demî û nerînên demjimêr bi gelemperî tune.

& # 34; EXPECT HINTS & # 34;

Li wir der barê hin tişt hene hene ku dibe ku ne-nebaş be. Ev beş hewl dide hin tiştan van çend tiştan digel çend pêşniyaran.

Pirsgirêka hêvî ya gelemperî ku çawa têgihîştin şehê nas dikin. Ji ber ku ev bi cûda û cûda cûda cûreyên cuda cuda têne çêkirin, dikarin rlogînek otomatîkî dikare bêyî zehf zehmet be. Peymana maqûl a baş e ku bikarhênerên xwenîşandanek bi rêvebirin veguherînin ku (bi taybetî, dawiya wê) di encama hawirdora hawirdorê de EXPECT_PROMPT. Kodê wekî jêrîn dikarin bikar bînin. Heke EXPECT_PROMPT tune ne, kodê hîn jî derfetek baş e ku karê rast e.

sazkirin "(% | # | \\ $) $"; # default prompt # {set prompt $ env (EXPECT_PROMPT)} hêv -re $ prompt

Ez ji te re vexwendim ku hûn bisekinîna bendavên ku li dawiya ku hûn hêvî dikin bibînin, binivîsin. Ew ji ber ku her tiştê dîtina derfetên pirsa bersiva pirsî dike. Herweha, dema ku hûn dikarin bi temamî temaşe bibînin, bersiva bersiv bidin, eger hûn bersîva bersîva, bersiva we dikare di nav nav pirsgirêka xwe de xuya bike. Di gotinên din de, diyaloga encam dibe ku rast be, lê xuya dike.

Gelek pêşniyarên taybetmendiya cihekî di nav dawiyê de hene. Ji bo nimûne, ji hêla ftp 'f', 't', 'p', '>' e. Ji bo vê lezgîniyê bikişînin, divê hûn ji bo her cûreyan hesab bikin. Ew xeletiyek hevpar e ku ne ku ji vala vala têxe. Vala binê zelal bikin.

Heke hûn pîvanek x * bikar bînin, * * hemû derheqê ji dawiya Xê ve hatî wateya dawî. Ev dengek hêsane nebe lê dibe ku hinek hêşkêş dibe ku ji "peyva dawî ya dawî" dikare dibe ku bi lezkirina komputerê û pêvajoyê ya I / O di bin kernel û ajokerê amûr de pêk tîne.

Bi taybetî, mirovên ku ji bo ku di rastiyê de gelek bernameyên ku di demekê de hilberînek çêbikin, hilberên bernameya hilberîner (li atomî) digerin. Bawerkirina vê yekê, ew e * * di çarçoveya paşîn ya berê de dikare tenê heya dawiyê ya heyî ya ku li wir bêtir xuya dibe, ji ber vê yekê, ji ber ku mizgeftê ku hemî hilber bû.

hêvî nekiriye ku rêvebirinê ne ku hilberîna din bête heya neyê ku hûn nimûne taybetî bi taybetî bigirin.

Her çiqas girêdayî berbiçavkirina lîndanê-êkirî ne bêaqil e. Ne tenê bernameyên nexşeyên li ser cureyên bufferkirinê dikin, ne tenê dikin, lê ji hundurê pergala hilanîna hilberên hilberên ku di rêzê de li cihên bêdeng têne veşartin. Ji ber vê yekê, heke hûn çend xemên hûrgelan ên ku dema nimûneyên nivîskî de bêjin, dikarin bi xweş bikin.

Heke hûn li benda dawî ya bernameyek li benda bisekinin û bernameyek din tiştek din dike, hûn ê nikarin ku bi vê demê re kêşeyên lêgerînê binêrin. Sedem e ku hêvî nabe ku demjimêran - wê bêyî wê nîşan bide. Vê yekê bikar bînin. Her weha baştir, hem jî bikar bînin. Bi vî rengî heya ku ew rêza her tiştî dihezîne, hûn ê nexweşî bi xwe veguherînin.

Newlines bi gelemperî veguhestina zorê ve têne guhertin, dema ku ji hêla ajotinê ve tête ajotinê tîrêjîn. Ji ber vê yekê, heger hûn pîvanek bixwazin ku her du xêzan, ji ji nû re dibêjin, printf ("foo \ nbar"), divê hûn riya "foo \ r \ nbar" bikar bînin.

Dema ku bikarhêner ji xwendinê re, wateya xweya hêvî dibe . Di vê rewşê de, dema ku hûn vegeriya çapemeniyê, ew dê ji bo nûveke nû wergerandin. Heke hêvîdar be ku ew bernameyek bernameyek dike ku modela xwe ya xaçê (wek telnet), wê dibe ku pirsgirêk be, dê ku bernameya vegera rastîn e. (Hin bernameyên rastî ji baxşandinê têne kirin ku ew dê bi xwe veguhastin nûçeyên xwe wergerandin, lê piranî ne.) Bi mixabin, rêvebirin ku tu bernameyek dît ku bernameyek wê termînalê xwe di nav moda raweyê de ye.

Ji bilî ji nû ve nû veguherandina nûjenên nû veguherîn, çareseriyê ji bo "raw stis", ku dê wergera raweste bike, bikar bînin. Têbigere, lêbelê, wê wateyê ku hûn ê bêhtir taybetmendiyên lîsans-taybetmendiyê çêbikin.

veguhestina xwe veguherîna xwe ya bendava rawestî dike, da ku ev pirsgirêk wê nabe.

Ew gelemperî ku ji bo şîfreyên hêvîdar ên şîfreyên şîfre (yan agahiyên taybet ên din) de tomar dikin. Ji ber ku tiştek ku li ser komputer vekirî ye, pêşniyar nayê pêşniyar kirin ku ji hêla kesek ve tê gihîştin hesab e. Ji ber vê yekê, bi awayekî veguherî ji bo şîfreyên ji hêla şîfreyê veguhestin ji wan re bi rengek şermezar dike. Bêguman, carinan hinek şexsî meriv tenê tenê derfet e.

Mixabin, pergala pelê ya UNIX nayê rêbazên afirandina şîfreyê çêbikin ku rêvebirinê lê bêkêmasî ne. Pergalên ku piştgiriya pelên şîfreya setgidgid piştgirî dibe dikarin bi vî awayî bi vî awayî diperizînin:

Pêvajûya Pêvajoya Pêşniyar ( Destûra wê bikin 750 (-rwxr-x ---) û ji hêla koma ewlehî ve girêdayî ye, an jî, grûpek ku destûra xwendinê ye. Heke pêwîst be, ji bo vê armanca nû ya nû çêbikin. Pêvek, lîsk / bin / shî bi destûra 2751 (-rwxr-s-x) ava bike.

Di encamê de encam hate nivîsandin ku dibe ku ji aliyê kesekî ve hatiye kuştin (û xwendin). Dema ku tê vexwendin, ew pirtûkek hêvî dike .

& # 34; ALSE & # 34;

Tcl (3), libexpect (3)
"Hêviya Daxuyanî: A Tcl-based Toolkit ji bo Bernameyên Interaktaktîfên Tenduristî" ji hêla Don Libes, pp 602, ISBN 1-56592-090-2, O'Reilly û Associates, 1995.
"hêvîdar kirin: Ji bo Têkiliya Navneteweyî ya Navneteweyî ya Navnetewî" ji hêla Don Libes, Pêşnavên Pêşîn ên Summer Summit 1990 USENIX, Anaheim, California, June 11-15, 1990.
.Ji "Daxwazin Mirovên Bikaranîna Rêveberiya Rêveberiya Xweseriya Xweseriya Xweseriya Xweseriya Xweseriyê" ji hêla Ders Libes, Progressions of 1990 1990IX Konferansa Birêvebiriya Sîstema Pergala Pergala Mezin, Colorado Springs, Colorado, Çile 17-19, 1990.
.Di "Tcl: Biryareke Biryara Anjewletî" ji hêla John Ousterhout, Pêşniyarên Winter Winter 1990, Washington, DC, 22-22ê çileya paşîna (January), 1990ê. "Ez hêvîdar dike: Bernameyên ji bo Bernameyên Navnetewî ya Bernameyên" - Don Libes, Computing Systems , Vol. 4, Nîsana 2, Zebûr Kovara Çapemeniyê ya Çapemeniyê, Nîsana 1991. I "Bernameya Interactive Agahdariya Têkilî û Peymana Demokrasiyê", ji hêla Don Libes, Pêşveçûnên Deryaya 1992ê Konferansa USENIX, pp. 135-144, San Antonio, TX, Di 12-15ê hizêrana, 1992'an de "I Kibitz - Hevalbendên Pirrjimar Pirrjimar Pirrjimar", ji hêla Don Libes, Agahdariya Bernameya / Siyasetê, John Wiley & Sons, West Sussex, Îngilîzî, Vol.

23, No. 5, Gulan, 1993. I "Karûbarên Tcl-Apparel", ji hêla Don Libes, Prosesa wê ya 1993 Tcl / Tk Workshop, Berkeley, CA, 10ê hizêrana 2003-an, 1993.

NIVÎSKAR

Don Libes, Enstîtuya Neteweyî ya Standards û Teknolojî

ZAROKÊN

Bi spas ji John Ousterhout ji bo Tcl, û Scott Paisley ji bo veşartinê. Ji kerema xwe ji Rob Savoye ji bo koda autoconfiguration ya hêvîbûnê.

Dokumentên belgeya dîrokî pir pirfirehbûna hêvîbûnê . Ew xwendina balkêş e û dibe ku hûn bêtir agahdariya vê softwareê bidin. Ji kerema xwe re kesên ku di nav wan de behsa gotinên ku ez şaşên şand û şandin me din.

Design û bicîhkirina hêvîbûnê ji hêla aliyê hikumeta Dewletên Yekbûyî ve hat dayîn û ji ber ku di navenda gelemperî de ye. Lêbelê nivîskar û NIST dê kredî dixwaze eger ev bernameyê û belgeyên an jî beşên wan têne bikaranîn.