Exec - Linux Command - Unix komanda

exec - Išskleisti subprocesą (-us)

Anotacija

exec ? jungikliai ? arg ? arg ... ?

apibūdinimas

Ši komanda elgiasi su savo argumentais kaip vieno ar kelių paleidimo specifikacijų specifiką. Argumentai yra standartinio lukšto vamzdyno forma, kur kiekvienas argas tampa vienu komandos žodžiu, o kiekviena atskira komanda tampa pogrupiu.

Jei pradiniai argumentai exec pradedami, tada jie laikomi komandų eilutės jungikliais ir nėra dujotiekio specifikacijos dalis. Šiuo metu palaikomi šie jungikliai:

-keepnewline

Išsaugo dujotiekio išvesties antrąją eilutę. Paprastai užpakalinė eilutė bus ištrinta.

-

Pažymi jungiklių pabaigą. Argumentas po šio yra laikomas pirmuoju arg, net jei jis prasideda nuo - .

Jei arg (arba poros arg ) turi vieną iš žemiau aprašytų formų, jis naudojamas exec, kad valdytų įvesties ir išvesties srautą tarp subproceso (-ų). Tokie argumentai nebus perduoti subprocesui (-ams). Tokiose formose kaip `` fileName '' fileName gali būti atskiras argumentas iš `` <'' arba tame pačiame argumente be tarpinio lauko (ty `` < fileName '').

|

Atskiras dujotiekio atskiras komandas. Standartinė ankstesnės komandos išvestis bus įtraukiama į standartinę kitos komandos komandą.

| &

Atskiras dujotiekio atskiras komandas. Tiek standartinės išvesties, tiek ir standartinės ankstesnės komandos klaidos bus įtrauktos į standartinę kitos komandos komandą. Ši peradresavimo forma pakeičia formas, tokias kaip 2> ir> &.

< fileName

Failas, pavadintas fileName , atidaromas ir naudojamas kaip standartinis įvadas pirmojoje vamzdyno komandoje.

<@ fileId

FileId turi būti atviro failo identifikatorius, pvz., Grąžinimo vertė iš ankstesnio atviro skambučio. Jis naudojamas kaip standartinis įvadas pirmojoje dujotiekio komandoje. FileId turi būti atidarytas skaityti.

<< vertė

Vertė perduodama į pirmąją komandą kaip įprastą įvestį.

> filename

Standartinė išvestis iš paskutinės komandos peradresuojama į failą, pavadintą fileName , perrašydamas ankstesnį jo turinį.

2> fileName

Standartinė klaida iš visų komandų vamzdyne nukreipiama į failą, pavadintą fileName , perrašydamas ankstesnį turinį.

> & fileName

Tiek standartinė išėjimo iš paskutinės komandos, tiek standartinė klaida iš visų komandų nukreipiama į failą, pavadintą fileName , perrašydamas ankstesnį turinį.

>> file name

Standartinė išvestis iš paskutinės komandos peradresuojama į failą pavadinimu fileName , pridedama prie jo, o ne perrašoma.

2 >> fileName

Standartinė klaida iš visų komandų vamzdyne nukreipiama į failą pavadinimu fileName , pridedama prie jo, o ne perrašoma.

>> & fileName

Tiek standartinė išvestis iš paskutinės komandos, tiek standartinės klaidos iš visų komandų nukreipiama į failą, pavadintą fileName , pridedant prie jo, o ne jo perrašymo.

> @ fileId

FileId turi būti atviro failo identifikatorius, pvz., Grąžinimo vertė iš ankstesnio atviro skambučio. Standartinė išvestis iš paskutinės komandos peradresuojama į fileId failą, kuris turėjo būti atidarytas rašyti.

2> @ fileId

FileId turi būti atviro failo identifikatorius, pvz., Grąžinimo vertė iš ankstesnio atviro skambučio. Standartinė klaida iš visų komandų vamzdyne peradresuojama į fileId failą. Failas turi būti atidarytas rašyti.

> & failas @ failas

FileId turi būti atviro failo identifikatorius, pvz., Grąžinimo vertė iš ankstesnio atviro skambučio. Tiek standartinė išėjimo iš paskutinės komandos, tiek standartinė klaida iš visų komandų nukreipiama į failo failo failą. Failas turi būti atidarytas rašyti.

Jei standartinė išvestis nebuvo peradresuota, exec komanda grąžina standartinę išėjimo iš paskutinės dujotiekio komandos komandą. Jei kuri nors iš vamzdyno komandų išeina neįprastai arba žudoma arba laikinai sustabdoma, exec grąžina klaidą, o klaidos pranešime pateikiama dujotiekio išvestis, po kurios pateikiami klaidų pranešimai, apibūdinantys neįprastus nutraukimus; klaidos kodo kintamasis turės papildomos informacijos apie paskutinį neįvykdytą nutraukimą. Jei kuri nors iš komandų įrašo į savo standartinį klaidų failą ir ši standartinė klaida nenukreipiama, exec grąžina klaidą; į klaidos pranešimą bus įtraukta vamzdyno standartinė išvada, po kurios bus pranešimai apie nenormalius nutraukimus (jei yra), po kurių eina standartinė klaida.

Jei paskutinysis rezultato ar klaidos pranešimo simbolis yra naujoji eilutė, šis simbolis paprastai ištrinamas iš rezultato arba klaidos pranešimo. Tai atitinka kitas "Tcl" grąžinimo reikšmes, kurios paprastai nebegalioja su naujomis eilutėmis. Tačiau, jei nurodomas -keepnewline, palikta užpakalinė nauja eilutė.

Jei standartinė įvestis nenukreipiama naudojant `` <'' arba `` << '' arba `` <@ '', tada standartinė įvestis pirmojoje vamzdyno komandoje yra paimta iš dabartinės standartinės įvesties.

Jei paskutinis arg yra `` & '', tada vamzdynas bus vykdomas fone. Šiuo atveju vykdomoji komanda grąžins sąrašą, kurio elementai yra proceso identifikatoriai visoms dujotiekio pogrebėjams. Standartinė išvestis iš paskutinės vamzdynų komandos eina į standartinės programos išvestį, jei jis nebuvo nukreiptas, o klaidų išvedimas iš visų komandų vamzdyne pereis į programos standartinį klaidų failą, nebent bus peradresuojamas.

Pirmasis žodis kiekvienoje komandoje laikomas komandos pavadinimu; Tilde yra pakeičiamas, o jei rezultatas neturi jokių brūkšnių, tada aplanke PATH aplanko kataloguose ieškoma vykdomojo failo pagal vardą. Jei pavadinime yra brūkšnys, tada jis turi nurodyti vykdomąjį failą, pasiekiamą iš dabartinio katalogo. Komandų argumentams nėra atliekama `` glob '' plėtra ar kiti shell-like pakeitimai.

Perkeliamumo problemos

Windows (visos versijos)

Skaitymas iš arba įrašymas į lizdą naudojant " @ fileId " " nota " neveikia. Skaitydami iš lizdo, 16 bitų DOS programa bus pakabinta ir 32 bitų programa vėl bus grąžinta failo pabaigoje. Kai bet kuri programos rūšis rašo į lizdą, informacija yra siunčiama į konsolę, jei ji yra, arba yra atmesta.

"Tk console" teksto valdiklis neteikia tikrų standartinių IO galimybių. Pagal Tk, kai nukreipiama iš standartinės įvesties, visos programos pamatys greitą failo pabaigą; informacija, nukreipta į standartinę išeitį arba standartinė klaida, bus atmesta.

Tariamai į priekį arba atgal grįžtantys brūkšniai yra priimami kaip takų atskyrikliai argumentams Tcl komandoms. Vykdant programą, kelio pavadinime, nurodytame programai, kaip kelio skirtukus taip pat gali būti įstrižai į priekį arba atgal. Tačiau turėkite omenyje, kad dauguma "Windows" programų pritaria argumentams, kurių persiuntimo brūkšniai yra tik kaip parinkčių apribojimai ir grįžtantys brūkšniai tik keliuose. Bet kokie argumentai taikymui, kuris nurodo kelio pavadinimą su brūkšniais į priekį, automatiškai nebus konvertuojami, kad būtų naudojamas grįžtamojo brūkšnio simbolis. Jei argumentas yra kelio skirtukas, jis gali būti arba negali būti pripažintas kelio pavadinimu, priklausomai nuo programos.

Be to, skambinant 16 bitų "DOS" arba "Windows 3.X" programai, visi kelio pavadinimai turi naudoti trumpą, šnipščio kelio formatą (pvz., Naudojant "` applba ~ 1.def '', o ne `` applbakery.default '' )

Du arba daugiau iš eilės į kelią nukreipti pirmyn arba atgal yra nuorodos į tinklo kelią. Pavyzdžiui, paprastas rootkatalogo c: / sujungimas su pakatalogiu / windows / sistema duos c: // windows / system (du brūkšniai kartu), kuris nurodo sistemos prijungimo tašką, vadinamą " windows" (ir c: / ignoruojama) ir nėra lygiavertė c: / windows / sistemai , kuri aprašo dabartinio kompiuterio katalogą. Failo prisijungimo komanda turėtų būti naudojama siekiant sujungti kelio komponentus.

Windows NT

Bandydami paleisti programą, exec pirmiausia ieško vardo, kaip jis buvo nurodytas. Tada, norėdami, .com , .exe ir .bat pridedamos prie nurodyto vardo pabaigos ir ieškoma ilgesnio vardo. Jei katalogo pavadinimas nebuvo nurodytas kaip programos pavadinimo dalis, bandant rasti taikomą programą, automatiškai ieškoma šių katalogų:

Katalogas, kuriame buvo įkeltas Tcl vykdomąjį failą.
Dabartinis katalogas.
"Windows NT" 32 bitų sistemos aplankas.
Windows NT 16 bitų sistemos aplankas.
Namų katalogas Windows NT.
Katalogai, išvardyti kelyje.

Norint vykdyti shell apjungimo komandas, tokias kaip dir ir kopijuoti , skambinančiajam reikia nurodyti `` cmd.exe / c '' norimą komandą.

Windows 95

Bandydami paleisti programą, exec pirmiausia ieško vardo, kaip jis buvo nurodytas. Tada, norėdami, .com , .exe ir .bat pridedamos prie nurodyto vardo pabaigos ir ieškoma ilgesnio vardo. Jei katalogo pavadinimas nebuvo nurodytas kaip programos pavadinimo dalis, bandant rasti taikomą programą, automatiškai ieškoma šių katalogų:

Katalogas, kuriame buvo įkeltas Tcl vykdomąjį failą.
Dabartinis katalogas.
"Windows 95" sistemos katalogas.
"Windows 95" pagrindinis katalogas.
Katalogai, išvardyti kelyje.

Norint vykdyti shell apjungimo komandas, tokias kaip dir ir kopijuoti , skambinančiajam reikia nurodyti komandą `` command.com / c ''.

Kai 16 bitų DOS programa perskaitė standartinę konsolės įvestį ir tuomet uždarykite, visos vėliau paleistos 16 bitų DOS programos pamatys standartinį įvestį, kuris jau uždarytas. 32 bitų programos neturi šios problemos ir veikia teisingai net po to, kai 16 bitų DOS programa mano, kad standartinė įvestis yra uždaryta. Šiuo metu nėra jokios žinomos problemos dėl šios klaidos.

Peradresavimas tarp NUL: įrenginio ir 16 bitų programos ne visada veikia. Peradresuojant iš NUL: kai kurios programos gali pakabinti, kiti gauna begalinį srautą "` 0x01 '' baitų, o kai kurie iš tikrųjų teisingai gauna greitą failo pabaigą; atrodo, kad elgesys priklauso nuo to, kas įrašyta į pačią paraišką. Kai peradresuojama daugiau nei 4K ar daugiau, kad būtų NUL: kai kurios programos pakils. Pirmiau minėtos problemos neįvyksta su 32 bitų programomis.

Visos "DOS" 16 bitų programos paleidžiamos sinchroniškai. Visas standartinis įėjimas iš vamzdžio į 16 bitų DOS programą yra surenkamas į laikiną failą; kitas vamzdžio galas turi būti uždarytas prieš prasidedant 16 bitų DOS programai. Visa standartinė išvestis ar klaida iš 16 bitų DOS programos į vamzdį surenkama į laikinąsias bylas; paraiška turi būti nutraukta, kol laikinosios bylos nukreipiamos į kitą dujotiekio etapą. Taip atsitiko dėl "Windows 95" klaidos dėl vamzdžių įdiegimo ir kaip standartinis "Windows 95 DOS" korpusas tvarko vamzdžius.

Tam tikros programos, pvz., Command.com , neturėtų būti vykdomos interaktyviai. Programos, kurios tiesiogiai pasiekia konsolės langą, o ne skaitomos iš standartinės įvesties ir rašo į standartinę išvestį, gali sugesti, pakabinti Tcl arba net pakabinti sistemą, jei jų privatus konsolės langas jiems nėra.

"Macintosh"

" Exec" komanda nėra įdiegta ir jos neegzistuoja "Macintosh" sistemoje.

Unix

" Exec" komanda yra visiškai funkcionali ir veikia kaip aprašyta.

Taip pat žiūrėkite

klaida (n), atidaryta (n)

Raktiniai žodžiai

vykdyti, dujotiekis, peradresavimas, pogrupis

Svarbu: naudokite komandą man ( % man ), kad pamatytumėte, kaip komanda naudojama jūsų konkrečiame kompiuteryje.