Exec - ukaz Linux - ukaz Unix

exec - Povabite podproces (e)

Povzetek

exec ? stikala ? arg ? arg ... ?

Opis

Ta ukaz obravnava svoje argumente kot specifikacijo enega ali več podprocesov za izvedbo. Argumenti imajo obliko standardnega ukazne lupine, kjer vsak argument postane ena beseda ukaza in vsak poseben ukaz postane podproces.

Če se začetni argumenti za exec začnejo - potem se obravnavajo kot stikala ukazne vrstice in niso del specifikacije za cevovode. Trenutno podpirajo naslednja stikala:

-seepnewline

Ohrani zadnjo linijo na izhodu plinovoda. Običajno bo izbrisana nova linija.

-

Označuje konec stikala. Argument, ki sledi temu, se obravnava kot prvi argument, tudi če se začne z - .

Če ima arg (ali par arg ) eno od spodaj opisanih obrazcev, ga uporablja za nadzor dotika vhoda in izhoda med podprocesi. Takšni argumenti ne bodo posredovani podprocesu. V oblikah, kot je »ime datoteke «, se lahko v datoteki »` <'' ali v istem argumentu brez vmesnega prostora (npr. `` < FileName ») nahaja ločeni argument.

|

Ločuje različne ukaze v pripravi. Standardni izhod predhodnega ukaza se bo vstavil v standardni vhod naslednjega ukaza.

| &

Ločuje različne ukaze v pripravi. Običajni izhod in standardna napaka prejšnjega ukaza se vnesejo v standardni vhod naslednjega ukaza. Ta oblika preusmerjanja preglasi oblik, kot sta 2> in> &.

datoteke

Datoteka, ki jo imenuje fileName, se odpre in uporablja kot standardni vhod za prvi ukaz v plinovodu.

<@ fileId

FileId mora biti identifikator za odprto datoteko, na primer povratno vrednost iz prejšnjega klica, ki jo želite odpreti . Uporablja se kot standardni vhod za prvi ukaz v plinovodu. FileId mora biti odprt za branje.

<< vrednost

Vrednost se prenese na prvi ukaz kot njegov standardni vnos.

> fileName

Standardni izhod iz zadnjega ukaza je preusmerjen na datoteko z imenom fileName , ki prepiše prejšnjo vsebino.

2> fileName

Standardna napaka vseh ukazov v plinovodu se preusmeri v datoteko z imenom fileName , prepiše prejšnjo vsebino.

> & fileName

Obe standardni izhod iz zadnjega ukaza in standardne napake iz vseh ukazov se preusmerijo na datoteko z imenom fileName , prepišejo svojo prejšnjo vsebino.

>> fileName

Standardni izhod iz zadnjega ukaza je preusmerjen na datoteko z imenom fileName , ki jo dodaja, namesto da jo prepiše.

2 >> fileName

Standardna napaka vseh ukazov v plinovodu je preusmerjena na datoteko z imenom fileName , ki jo dodaja, namesto da jo prepiše.

>> & fileName

Običajni izhod iz zadnjega ukaza in standardne napake iz vseh ukazov se preusmeri na datoteko z imenom fileName , ki jo dodaja, namesto da jo prepiše.

> @ fileId

FileId mora biti identifikator za odprto datoteko, na primer povratno vrednost iz prejšnjega klica, ki jo želite odpreti . Standardni izhod iz zadnjega ukaza je preusmerjen na datoteko fileId , ki je bila odprta za pisanje.

2> @ fileId

FileId mora biti identifikator za odprto datoteko, na primer povratno vrednost iz prejšnjega klica, ki jo želite odpreti . Standardna napaka vseh ukazov v plinovodu je preusmerjena na fileId datoteko. Datoteka mora biti odprta za pisanje.

> & @ fileId

FileId mora biti identifikator za odprto datoteko, na primer povratno vrednost iz prejšnjega klica, ki jo želite odpreti . Običajni izhod iz zadnjega ukaza in standardne napake iz vseh ukazov se preusmeri na datoteko fileId . Datoteka mora biti odprta za pisanje.

Če standardni izhod ni bil preusmerjen, ukaz ukaz exec vrne standardni izhod iz zadnjega ukaza v cevovodu. Če katerikoli od ukazov iz cevovoda izstopi nenormalno ali je ubil ali zaustavljen, potem bo exec vrnil napako, sporočilo o napaki pa bo vsebovalo izhod cevovoda, ki mu sledijo sporočila o napakah, ki opisujejo nenormalne zaključke; spremenljivka errorCode vsebuje dodatne informacije o zadnjem nenormalnem zaključku. Če kateri koli od ukazov piše v svojo standardno datoteko napak in ta standardna napaka ni preusmerjena, bo exec vrnil napako; sporočilo o napaki bo vključevalo standardni izhod plinovoda, ki mu sledijo sporočila o nenormalnih zaključkih (če obstajajo), sledi standardni izhod napake.

Če je zadnji znak rezultata ali sporočila o napaki nova linija, se ta znak običajno izbriše iz sporočila o rezultatu ali sporočilu o napaki. To je v skladu z drugimi vrednostmi Tcl, ki se običajno ne končajo z novimi vrsticami. Če pa je podana -eepnewline, je zadnja linija ohranjena.

Če standardni vhod ni preusmerjen z ,, <'' ali `` `` `` `` `` `` `, se standardni vhod za prvi ukaz v cevovodu vzame iz trenutnega standardnega vhoda aplikacije.

Če je zadnji argument `` & '', se bo cevovod izvajal v ozadju. V tem primeru bo ukaz exec vrnil seznam, katerega elementi so identifikatorji procesa za vse podprocese v plinovodu. Standardni izhod iz zadnjega ukaza v plinovodu bo prešel na standardni izhod aplikacije, če ni bil preusmerjen, izhodna napaka iz vseh ukazov v cevovodu pa bo prešla v standardno datoteko napake aplikacije, razen če se preusmeri.

Prva beseda v vsakem ukazu je vzeta kot ime ukaza; Tilde-substitucija se izvaja na njej, in če rezultat ne vsebuje poševnic, potem imeniki v okoljski spremenljivki PATH iščejo izvedljivo ime. Če ime vsebuje poševnico, se mora nanašati na izvedljivo datoteko, ki jo je mogoče doseči iz trenutnega imenika. Razširitve `` glob '' ali druge lupinske podobne substitucije se izvajajo na argumentih za ukaze.

Prenosna vprašanja

Windows (vse različice)

Branje ali pisanje v vtičnico, ki uporablja zapis `` @ fileId ', ne deluje. Pri branju iz vtičnice se bo 16-bitna DOS aplikacija obesila in 32-bitna aplikacija takoj vrne s končnim datoteko. Ko katera koli vrsta aplikacije piše v vtičnico, se informacije namesto tega pošljejo v konzolo, če je prisotna ali je zavržena.

Vmesnik za besedilo konzole Tk ne zagotavlja pravih standardnih zmogljivosti IO. Pri Tk pri preusmerjanju s standardnega vhoda bodo vse aplikacije videli takojšen zaključek datoteke; informacije, preusmerjene na standardni izhod ali standardne napake, bodo zavržene.

Sprednje ali zadnje poševnice so sprejete kot ločila poti za argumente do ukazov Tcl. Pri izvedbi aplikacije lahko ime poti, ki je določeno za aplikacijo, vsebuje tudi poševnice naprej ali nazaj kot ločilnike poti. Vendar upoštevajte, da večina programov Windows sprejema argumente s poševnimi črkami le kot ločilo možnosti in poševnice le v poteh. Vsi argumenti za aplikacijo, ki določajo ime poti s poševnimi črkami, ne bodo samodejno pretvorjeni, da bi lahko uporabili znak črte. Če argument vsebuje poševnice naprej kot ločilo poti, se lahko ali ne bo priznal kot ime poti, odvisno od programa.

Poleg tega morajo pri klicanju 16-bitne DOS ali Windows 3.X aplikacije vsa imena poti uporabiti kratko, šifrirano obliko poti (npr. Z uporabo »applba ~ 1.def« namesto »applbakery.default« ).

Dve ali več poševnic naprej ali nazaj v vrsti na poti se nanaša na omrežno pot. Na primer, preprosta združitev korenskega imenika c: / s podimenikom / okno / sistem bo dala c: // okno / sistem (dve črtasti skupaj), ki se nanaša na točko vgradnje, imenovano sistem na stroju, imenovanem okna (in c: / je prezrt) in ni enakovreden c: / windows / sistemu , ki opisuje imenik na trenutnem računalniku. Ukaz za združevanje datotek naj se uporabi za združevanje komponent poti.

Windows NT

Pri poskusu izvajanja aplikacije, exec najprej išče ime, kot je bilo določeno. Nato se vrstni red, .com , .exe in .bat dodajo na konec določenega imena in iščejo daljše ime. Če ime imenika ni bilo podano kot del imena aplikacije, se samodejno iščejo naslednji imeniki, ko poskušate poiskati aplikacijo:

Imenik, iz katerega je bila naložena izvedljiva Tcl.
Trenutni imenik.
32-bitni imenik sistema Windows NT.
Sistemski imenik sistema Windows NT 16-bitni.
Domači imenik Windows NT.
Imeniki, navedeni na poti.

Za izvajanje ukazov, ki so zgrajeni v lupini, npr. Dir in kopiranje , mora klicatelj pripraviti `` cmd.exe / c '' na želeni ukaz.

Windows 95

Pri poskusu izvajanja aplikacije, exec najprej išče ime, kot je bilo določeno. Nato se vrstni red, .com , .exe in .bat dodajo na konec določenega imena in iščejo daljše ime. Če ime imenika ni bilo podano kot del imena aplikacije, se samodejno iščejo naslednji imeniki, ko poskušate poiskati aplikacijo:

Imenik, iz katerega je bila naložena izvedljiva Tcl.
Trenutni imenik.
Sistemski imenik sistema Windows 95.
Domači imenik Windows 95.
Imeniki, navedeni na poti.

Če želite izvedeti ukaze, ki so zgrajene v lupini, kot sta dir in kopiranje , mora klicatelj pripraviti `` command.com / c '' na želeni ukaz.

Ko 16-bitna DOS-aplikacija bere standardni vhod iz konzole in nato zapusti, bodo vsi naknadno zagnani 16-bitni DOS-programi videli standardni vhod kot že zaprt. 32-bitne aplikacije nimajo te težave in bodo delovale pravilno, tudi če 16-bitna aplikacija DOS meni, da je standardni vhod zaprt. Za to napako trenutno ni znana rešitev.

Preusmeritev med NUL: naprava in 16-bitna aplikacija ne deluje vedno. Pri preusmerjanju iz NUL: lahko nekatere aplikacije visijo, drugi bodo dobili neskončni tok "0x01" bytov in nekateri bodo dejansko pravilno dobili takojšen zaključek datoteke; Zdi se, da je vedenje odvisno od tega, kaj se je zbralo v sami aplikaciji. Ko preusmerite več kot 4K ali tako na NUL:, bodo nekatere aplikacije obesile. Te težave se ne zgodijo s 32-bitnimi aplikacijami.

Vse DOS 16-bitne aplikacije se izvajajo sinhrono. Vsi standardni vhodi iz cevi v 16-bitno DOS-aplikacijo se zbirajo v začasno datoteko; drugi konec cevi je treba zapreti, preden se 16-bitna DOS aplikacija začne izvajati. Vsi standardni izhodi ali napake iz 16-bitne DOS aplikacije na cev se zbirajo v začasne datoteke; mora prijava prenehati, preden se začasne datoteke preusmerijo na naslednjo stopnjo plinovoda. To je posledica rešitve za napako v operacijskem sistemu Windows 95 pri izvajanju cevi, in sicer, kako standardna lupina Windows 95 DOS deluje s samimi cevmi.

Nekatere aplikacije, na primer ukaze.com , ne bi smeli izvajati interaktivno. Aplikacije, ki neposredno dostopajo do okna konzole in ne odčitajo od standardnega vnosa in pisanja do standardnega izhoda, ne morejo, obesiti Tcl ali celo obesiti sistem, če jim njihova zasebna konzola ni na voljo.

Macintosh

Ukaze exec se ne izvaja in ne obstaja v sistemu Macintosh.

Unix

Ukaz exec je popolnoma funkcionalen in deluje kot je opisano.

Poglej tudi

napaka (n), odprta (n)

Ključne besede

izvedba, plinovod, preusmeritev, podproces

Pomembno: Uporabite ukaz man ( % man ), da vidite, kako se na vašem računalniku uporablja ukaz.