Exec - Linux Command - Unix Command

exec - Käivita alaprotsess (id)

Kokkuvõte

exec ? lülitid ? arg ? arg ... ?

Kirjeldus

Selle käsuga käsitletakse selle argumente ühe või mitme alamprotsessi täpsustamiseks käivitamiseks. Argumendid asetsevad korrapärase torujuhtme kujul, kus iga arg muutub üheks käsusõnaks ja iga eraldi käsk muutub alamprotsessiks.

Kui esialgsed argumendid rakenduse käivitamiseks algavad - siis käsitletakse neid käsurea lülitustega ja need ei kuulu torujuhtme spetsifikatsiooni hulka. Praegu toetatakse järgmisi lülitusi:

-keepnewline

Jätkub gaasijuhtme väljundis jäljenev uus rida. Tavaliselt jäetakse jälle uus rida välja.

-

Märgib lülitite lõppu. Sellele järgnevat argumenti käsitletakse esimese argina, isegi kui see algab - .

Kui arg (või argi paar) omab üht allpool kirjeldatud vormi, siis kasutab exec seda sisend- ja väljundvoo juhtimiseks alamprotsessi (de) hulgast. Selliseid argumente ei edastata alaprotsessile (-le). Sellistel vormidel nagu `` filename '' failnimi võib olla kas eraldiseisvas argumendis, mis pärineb `` <'' või samas argumendis, kus puudub vahepealne ruum (st `` < fileName '').

|

Eraldab torustikus erinevad käsud. Eelmise käsu standardväljund kantakse järgmise käsu standardseks sisendiks.

| &

Eraldab torustikus erinevad käsud. Eelmise käsu standardväljund ja standardviga suunatakse järgmise käsu standardseks sisendiks. Selline ümbersuunamisvorm välistab vormid nagu 2> ja> &.

< fileName

Failinimi nimega fileName avatakse ja seda kasutatakse torujuhtme esimese käsu tavalise sisendina.

<@ fileId

FileId peab olema avatud faili identifikaator, näiteks eelmisele avatud kõnele vastav tagastusväärtus. Seda kasutatakse standardse sisendina torujuhtme esimese käsu jaoks. FileId peab olema lugemiseks avatud.

<< väärtus

Väärtus edastatakse standardse sisendina esimesele käsule.

> failinimi

Viimase käskluse standardväljund suunatakse faili nimega failinimi , mis kirjutab selle eelmise sisuga üle.

2> failinimi

Standardviga kõikidest käsklusest torujuhtmes suunatakse faili nimega fileName , kirjutades selle eelmise sisuga.

> & failinimi

Mõlemad standardkäsud, mis pärinevad viimasest käsklusest ja standardviga kõigist käskudest, suunatakse faili nimega fileName , kirjutades selle eelmise sisuga üle.

>> file name

Viimase käsu standardväljund suunatakse faili nimega fileName juurde , lisades sellele selle, selle asemel, et see üle kirjutada.

2 >> fileName

Standardviga kõikidest käsklusest torujuhtmes suunatakse faili nimega failinimi , lisades sellele selle asemel üle kirjutamise.

>> Faili nimi

Mõlemad standardkäsud, mis pärinevad viimasest käsklusest ja standardviga kõigist käskudest, suunatakse faili nimega fileName juurde , lisades sellele selle, selle asemel, et seda üle kirjutada.

> @ fileId

FileId peab olema avatud faili identifikaator, näiteks eelmisele avatud kõnele vastav tagastusväärtus. Viimase käsu standardväljund suunatakse faili faili, mis peab olema avatud kirjutamiseks.

2> @ fileId

FileId peab olema avatud faili identifikaator, näiteks eelmisele avatud kõnele vastav tagastusväärtus. Tavapärane viga kõikidest käskudest torujuhtmetes redigeeritakse fileId faili. Fail peab olema kirjutamiseks avatud.

> & failiId

FileId peab olema avatud faili identifikaator, näiteks eelmisele avatud kõnele vastav tagastusväärtus. Kõigi käskude viimase käskluse standardväljund ja standardviga suunatakse fileId faili. Fail peab olema kirjutamiseks avatud.

Kui standardväljundit ei ole ümber suunatud, siis käivitab exec käsk standardväljundi torujuhtme viimasest käsklusest. Kui ükskõik torujuhtme käsklusest ebaharilikult väljub või see surmatakse või peatatakse, siis tagastab rakendus vea ja veateade sisaldab torujuhtme väljundit, millele järgneb vea teade, mis kirjeldab ebanormaalseid lõppu; errorCode muutuja sisaldab lisateavet viimase puuduliku lõpetamise kohta. Kui ükskõik milline käsk kirjutab oma standardveifailile ja seda standardviga ei suunata ümber, siis tagastab exec käsu vea; veateade sisaldab torujuhtme standardväljundit, millele järgneb teade ebanormaalsete lõpetuste kohta (kui neid on), millele järgneb standardviga väljund.

Kui tulemuse või veateate viimane märk on uus rida, siis tavaliselt kustutatakse see märk tulemus- või veateadetest. See on kooskõlas teiste Tcl-tagastatavate väärtustega, mis tavapäraselt ei lõpe uute ribidega. Kui aga on määratud -keepnewline, jääb jäljendi uus rea endiselt kinni.

Kui standardseid sisendeid ei redireerita koos `` <'' või `` << '' või `` <@ '', siis võetakse torujuhtme esimese käskluse standardne sisestus rakenduse praegusest standardse sisendist.

Kui viimane arg on `` & '', siis käivitatakse torujuhe taustal. Sel juhul tagastab exec käsk nimekirja, mille elemendid on protsesside identifikaatorid kõigile torujuhtme alamprotsessidele. Viimase käskluse standardväljund torujuhtmest läheb rakenduse standardväljani, kui seda ei ole ümber suunatud, ja kõigi torujuhtme käskude veaväljund läheb rakenduse standardveifailile, kui seda ei redireerita.

Iga käskluse esimene sõna on käsu nimi; Tilde asendamine seda tehakse, ja kui tulemus ei sisalda kaldkriipsu, siis otsitakse kataloogis PATH-i keskkonnamuutujat täidetava faili antud nime abil. Kui nimi sisaldab kaldkriipsu, peab see viitama käimasolevale kataloogile. Käskude argumentidele ei tehta `` glob '' laiendamist ega muid koorega sarnaseid asendusi.

Portability Probleemid

Windows (kõik versioonid)

Pistiku lugemine või kirjutamine faili `` @ fileId '' tähistuse abil ei toimi. Pistikupesast lugedes ripub 16-bitise DOS-i rakendus ja 32-bitisel rakendusel tagastatakse kohe faili lõpp. Kui mõni rakenduse tüüp kirjutab pistikupessa, edastatakse see teave konsooli asemel, kui see on olemas või seda loobutakse.

Tk konsooli tekstiväli ei paku tõelisi standardseid IO-võimalusi. Tk korral näeb standardsete sisendite ümbersuunamine kõik rakendused koheselt faili lõppu; standardväljundiks või standardviga redigeeritav teave visatakse ära.

Tcl-käskude argumentideks võetakse tee-eraldajatena kas edasi- või tagasi kaldkriipsud. Rakenduse täitmisel võib rakenduse jaoks määratud tee nimi sisaldada ka tee eraldajatena edasi-tagasi kaldkriipsu. Pidage meeles siiski, et enamik Windowsi rakendusi aktsepteerivad argumente, mis on suunatud kaldkriipsudega, ainult kui optsiooni piiritlejad ja tagasilöögid ainult rajades. Mis tahes argumente rakendusele, mis määravad edastatavate kaldkriipsudega tee nime, ei konverteerita automaatselt, et kasutada tagasi tagasilöögiksiliba tähist. Kui argument sisaldab tee eraldajatena edastatavaid kaldkriipsu, võib seda sõltuvalt programmist tunnistada või mitte lugeda tee nimeks.

Peale selle, kui helistate 16-bitise DOS-i või Windows 3.X-i rakendusele, peavad kõik tee nimed kasutama lühikest, krüptitud tee vormingut (näiteks kasutades `` applba ~ 1.def '' `` applbakery.default '' asemel )

Teekonna rida kaks või enam edasi-tagasi kaldkriipsu viitavad võrguteele. Näiteks juurkataloogi c: / lihtsa liitmisega alamkataloogi / windows / süsteemiga saab c: // windows / system (kaks kaldkriipsu koos), mis viitab seadme märanaadi nimele süsteemile nimega windows (ja c: / ignoreeritakse) ja ei ole samaväärne c: / windows / süsteemiga , mis kirjeldab käimasoleva arvuti kataloogi. Juhtfaili liitmist tuleb kasutada tee komponentide ühendamiseks.

Windows NT

Rakenduse käivitamisel üritab exec esmalt otsida nime, nagu see oli määratud. Seejärel lisandub määratud nime lõpus olevad .com , .exe ja .bat ning see otsib pikemat nime. Kui katalooginime ei olnud rakenduse nime osana määratud, otsitakse rakenduse leidmise eesmärgil automaatselt järgmisi katalooge:

Kataloog, kust Tcl käivitatav fail laaditi.
Praegune kataloog.
Windows NT 32-bitiste süsteemide kataloog.
Windows NT 16-bitiste süsteemide kataloog.
Windows NT kodukataloog.
Teel loetletud kataloogid.

Selleks, et käivitada shelli sisseehitatud käskud nagu dir ja kopeeri , peab helistaja lisama soovitud käsule `` cmd.exe / c ''.

Windows 95

Rakenduse käivitamisel üritab exec esmalt otsida nime, nagu see oli määratud. Seejärel lisandub määratud nime lõpus olevad .com , .exe ja .bat ning see otsib pikemat nime. Kui katalooginime ei olnud rakenduse nime osana määratud, otsitakse rakenduse leidmise eesmärgil automaatselt järgmisi katalooge:

Kataloog, kust Tcl käivitatav fail laaditi.
Praegune kataloog.
Windows 95 süsteemi kataloog.
Windows 95 kodukataloog.
Teel loetletud kataloogid.

Selleks, et käivitada shelli sisseehitatud käskud nagu dir ja kopeeri , peab helistaja lisama soovitud käsule `` command.com / c ''.

Kui 16-bitise DOS-i rakendus on konsoolist standardse sisendiga lugenud ja seejärel loobu, näevad kõik järgnevad 16-bitiste DOS-i rakendused standardse sisendiga nii juba suletud. 32-bitistel rakendustel pole seda probleemi ja see töötab korralikult ka siis, kui 16-bitise DOS-i rakendus arvab, et standard sisend on suletud. Praegu selle viga ei ole teada.

Redigeerimine NUL: seadme ja 16-bitise rakenduse vahel ei tööta alati. Kui redigeeritakse NUL: mõned rakendused võivad rippuda, teised saavad piiramatu voo `` 0x01 '' baiti ja mõned saavad õigesti kohe faili lõppu; käitumine tundub olevat sõltuv rakenduse enda koostatud teost. Kui ümbersuunamine on suurem kui 4K kuni NUL: mõned rakendused hanguvad. Ülalmainitud probleemid ei juhtu 32-bitiste rakendustega.

Kõik DOS 16-bitised rakendused käitatakse sünkroonselt. Kõik standardne sisend torust 16-bitisele DOS-i rakendusele kogutakse ajutiseks failiks; toru teine ​​ots tuleb suletud enne 16-bitise DOS-i rakenduse käivitamist. Kõik standardväljundid või 16-bitise DOS-i rakenduse viga torude jaoks kogutakse ajutisteks failideks; rakendus peab lõpetama, enne kui ajutised failid suunatakse torujuhtme järgmisele etapile. See on tingitud lahendusest, mis on seotud Windows 95 veaga torude kasutamisel, ja see, kuidas tavaline Windows 95 DOS-i koorik käitleb torusid ise.

Teatud rakendusi, nagu command.com , ei tohiks interaktiivselt täita. Rakendused, mis otseselt konsooliaknasse ligipääsmatud, ei pruugi standardsete sisendite lugemisest ja nende standardväljundisse kirjutamisest, võivad ebaõnnestuda, hankida Tcl-i või isegi hangida süsteemi, kui nende enda konsooli aken pole neile kättesaadav.

Macintosh

Käsk exec ei ole rakendatud ja Macintoshi all ei eksisteeri.

Unix

Täitmis käsk on täiesti töökorras ja toimib vastavalt kirjeldusele.

Vaata ka

viga (n), avatud (n)

Märksõnad

käivitada, torujuhtme, suunamises, alamprotsessis

Tähtis: kasutage käsuga man ( % man ), et näha, kuidas käsku kasutatakse teie konkreetsel arvutis.