Exec - Linux Command - Unix parancs

exec - Kérje az alprocessz (ek)

Szinopszis

exec ? kapcsolók ? arg . arg ... ?

Leírás

Ez a parancs az argumentumait egy vagy több végrehajtandó alfolyamat specifikációjaként kezeli. Az érvek standard héjvezeték formájában vannak, ahol minden argumentum egy parancs egyik szavává válik, és minden egyes parancs egy alprocesszé lesz.

Ha a végrehajtás kezdeti argumentumait - akkor parancssori kapcsolóként kezelik, és nem részei a csővezeték specifikációjának. A következő kapcsolók jelenleg támogatottak:

-keepnewline

A csővezeték kibocsátásának megmarad egy új sor. Normál esetben egy utólagos új sor törlődik.

-

Jelzi a kapcsolók végét. Az ezt követő érvet az első argumentumnak tekintjük, még akkor is, ha egy - .

Ha egy arg (vagy arg párokkal) rendelkezik az alább leírt formák valamelyikével, azt a végrehajtó használja a bemeneti és a kimeneti folyamatnak az alprocesszorok (oka) között történő vezérlésére. Az ilyen érveket nem adják át az alprocessz (ek) nek. Az olyan fájlokban , mint a `` < fileName '' fájlnév lehet külön argumentum a `` <'' vagy ugyanabban az argumentumban, nincs beavatkozó hely (azaz `` < fájlnév ).

|

Különálló parancsokat különít a csővezetékbe. Az előző parancs szabvány kimenete a következő parancs szabványos bemenetébe kerül.

| &

Különálló parancsokat különít a csővezetékbe. Az előző parancs szabványos kimenete és standard hibája a következő parancs szabvány bemenetére kerül. Az átirányításnak ez a formája felülírja a 2> és> & formátumokat.

< fájlnév

A fileName nevű fájl megnyílik, és a csővezeték első parancsának standard bemeneteként használható.

<@ fileId

A FileId- nek egy nyitott fájl azonosítója kell, hogy legyen, például a megnyitott korábbi hívás visszatérési értéke. A csatorna első parancsának standard bemenete. A FileId-t le kell olvasni.

<< érték

Az érték a standard bemenetként kerül az első parancsra.

> fileName

Az utolsó parancs szabványos kimenete átirányításra kerül a fileName nevű fájlra, felülírva annak korábbi tartalmát.

2> fájlnév

A csővezetéken lévő összes parancs standard hibája átkerül a fájlnév fájlba, felülírva annak korábbi tartalmát.

> & fileName

Mind az utolsó parancs, mind az összes parancs standard hibája átirányításra kerül a fileName nevű fájlra, felülírva annak korábbi tartalmát.

>> fileName

Az utolsó parancs szabványos kimenete átirányításra kerül a fileName nevű fájlra, hozzáadásával hozzá, nem pedig annak felülírásához.

2 >> fileName

A pipeline összes parancsának standard hibája átkerül a fileName nevű fájlba, hozzáfűzve hozzá, nem felülírva.

>> & fileName

Mind az utolsó parancs, mind az összes parancs standard hibája átirányításra kerül a fileName nevű fájlra, hozzáfűzve hozzá, nem felülírva.

> @ fileId

A FileId- nek egy nyitott fájl azonosítója kell, hogy legyen, például a megnyitott korábbi hívás visszatérési értéke. Az utolsó parancs szabványos kimenete átirányításra kerül a fileId fájljába, amelyet meg kellett nyitni az íráshoz.

2> @ fileId

A FileId- nek egy nyitott fájl azonosítója kell, hogy legyen, például a megnyitott korábbi hívás visszatérési értéke. A csővezetéken található összes parancs standard hibája átkerül a fileId fájlba. A fájlt meg kellett nyitni az íráshoz.

> & @ fileId

A FileId- nek egy nyitott fájl azonosítója kell, hogy legyen, például a megnyitott korábbi hívás visszatérési értéke. Mind az utolsó parancs, mind az összes parancs standard hibája átirányításra kerül a fileId fájlba. A fájlt meg kellett nyitni az íráshoz.

Ha a szabványos kimenet nem lett átirányítva, akkor a exec parancs visszaadja a szabványos kimenetet a csővezeték utolsó parancsjából. Ha a csővezeték valamelyik parancsja abnormálisan kilép, vagy megölték vagy felfüggesztették, akkor a végrehajtó hibát küld, és a hibaüzenet tartalmazza a csővezeték kimenetét, majd a rendellenes végelzéseket leíró hibaüzeneteket; a hibakód változó további információkat tartalmaz az utolsó rendellenes végződésről. Ha valamelyik parancs a szabványos hibafájlba ír, és a standard hiba nem kerül átirányításra, akkor a végrehajtó hibát küld vissza; a hibaüzenet tartalmazza a csővezeték standard kimenetét, majd az abnormális lezárásokról szóló üzeneteket (ha van ilyen), amelyet a szokásos hibakimenet követ.

Ha az eredmény vagy a hibaüzenet utolsó karaktere új sor, akkor a karakter általában törlődik az eredmény vagy a hibaüzenetből. Ez összhangban van más Tcl visszatérési értékekkel, amelyek általában nem fejeződnek be az újvonalakkal. Ha azonban a -keepnewline meg van adva, akkor a követő újsor megmarad.

Ha a szabványos bemenet nem kerül átirányításra a `` <'' vagy `` << '' vagy `` <@ '' paranccsal, akkor a csővezeték első parancsának standard bemenete az alkalmazás jelenlegi szabványos bemenetéből származik.

Ha az utolsó argumentum `` & '', akkor a csővezeték végrehajtódik a háttérben. Ebben az esetben a exec parancs visszaad egy olyan listát, amelynek elemei a folyamat összes azonosítója a folyamatban lévő összes alfolyamathoz. A csővezeték utolsó parancsának szabványos kimenete az alkalmazás szabványos kimenetére változik, ha nem lett átirányítva, és a csővezeték összes parancsának hibája az alkalmazás szabványos hiba fájljába kerül, kivéve ha átirányításra kerül.

Minden parancs első mondata a parancsnév; tilde helyettesítést végzünk rajta, és ha az eredmény nem tartalmaz csíkokat, akkor a PATH környezeti változó könyvtárai a megadott névhez keresnek egy végrehajtható fájlt. Ha a név egy perjelet tartalmaz, akkor az aktuális könyvtárból elérhető végrehajtható fájlra kell hivatkoznia. Nincsenek `` glob '' kiterjesztés vagy más shell-szerű helyettesítések az argumentumokra a parancsokra.

Hordozhatósági kérdések

Windows (minden verzió)

A " @ fileId " jelölés használatával olvasni vagy írni egy aljzatba, nem működik. Aljzatról történő olvasáskor egy 16 bites DOS alkalmazás lefagy, és egy 32 bites alkalmazás azonnal visszatér a fájl végével. Ha az alkalmazás bármelyik típusa egy foglalatra ír, akkor az információt helyette a konzolba küldi, ha van jelen, vagy eldob.

A Tk konzol szöveg widget nem nyújt valós szabványos IO képességeket. A Tk alatt a szabványos bemenetről való átirányítás esetén az összes alkalmazás azonnali fájl végét fogja látni; a szabványos kimenetre vagy standard hibára átirányított információ el fog kerülni.

Vagy előre vagy hátra vágott perjelek fogadhatók el a Tcl parancsok argumentumaihoz. Alkalmazás végrehajtása esetén az alkalmazáshoz megadott elérési út tartalmazhat előre- vagy hátra vágott sávokat is. Ne feledje azonban, hogy a legtöbb Windows-alkalmazás elfogadja az argumentumokat, csak az opcióhatárolókat és a visszalövéseket csak az elérési útvonalakon. Bármely argumentum egy alkalmazáshoz, amely megadja az elérési útvonalként megadott elérési utat, nem kerül automatikusan konvertálásra a visszalépési karakter használatával. Ha egy argumentum az útvonalválasztó elülső sávjait tartalmazza, akkor a programtól függően lehet, vagy nem ismerhető fel útválasztó neveként.

Továbbá, ha 16 bites DOS vagy Windows 3.X alkalmazást hív meg, minden elérési útnak el kell használnia a rövid, rejtélyes útvonalformátumot (pl. "Applba ~ 1.def" helyett "applbakery.default" ).

Két vagy több előretekerés vagy elmaradott perjel egy sorban egy elérési útvonalon utal egy hálózati elérési útra. Például a gyökérkönyvtár c: / alkönyvtárral / windows / rendszerrel történő egyszerű összeillesztése c: // windows / system (két perjel együtt) eredményt ad, amely a gépen nevű, a Windows (és a c: / figyelmen kívül hagyja), és nem felel meg a c: / windows / system-nek , amely a jelenlegi számítógépen lévő könyvtárat írja le. A fájlegyesítő parancsot az elérési út összetevőinek összekapcsolására kell használni.

Windows NT

Alkalmazás végrehajtásakor az exec először a megadott nevet keresi. Ezután a .com , .exe és .bat fájlok a megadott név végéhez csatolódnak , és hosszabb nevet keres. Ha a könyvtár nevét nem az alkalmazásnév részeként adta meg, az alábbi könyvtárakat automatikusan keresik az alkalmazás megkeresése során:

A könyvtár, ahonnan a Tcl végrehajtható fájl lett betöltve.
Az aktuális könyvtár.
A Windows NT 32 bites rendszerkönyvtár.
A Windows NT 16 bites rendszerkönyvtára.
A Windows NT kezdőkönyvtára.
Az útvonalon felsorolt ​​könyvtárak.

A héj beépített parancsainak, például a dir és másolás végrehajtásához a hívónak el kell helyezni a `` cmd.exe / c '' parancsot a kívánt parancsra.

Windows 95

Alkalmazás végrehajtásakor az exec először a megadott nevet keresi. Ezután a .com , .exe és .bat fájlok a megadott név végéhez csatolódnak , és hosszabb nevet keres. Ha a könyvtár nevét nem az alkalmazásnév részeként adta meg, az alábbi könyvtárakat automatikusan keresik az alkalmazás megkeresése során:

A könyvtár, ahonnan a Tcl végrehajtható fájl lett betöltve.
Az aktuális könyvtár.
A Windows 95 rendszer könyvtárában.
A Windows 95 főkönyvtár.
Az útvonalon felsorolt ​​könyvtárak.

A héj beépített parancsainak futtatásához, mint a dir és a copy , a hívónak el kell adnia a `` command.com / c '' parancsot a kívánt parancshoz.

Miután egy 16 bites DOS alkalmazás megolvasta a konzolból származó szabványos bemenetet, majd kilépett, az ezt követő 16 bites DOS alkalmazások a standard bemenetet már lezárt állapotban látják. A 32 bites alkalmazásoknak nincsen ez a hiba, és a 16 bites DOS alkalmazás után is megfelelően fog működni, úgy gondolja, hogy a szabványos bemenet zárva van. Jelenleg nincs ismert megoldás erre a hibára.

A NUL: eszköz és a 16 bites alkalmazás közötti átirányítás nem mindig működik. Ha átirányítja a NUL-ot: egyes alkalmazások lefagyhatnak, mások végtelen számú "0x01" bájtot kapnak, és néhányan valójában helyesen kapnak azonnali fájlt; a viselkedés úgy tűnik, hogy magától függ, valamit össze a alkalmazás maga. Ha 4K-nál nagyobb átirányítás történik a NUL-ra: néhány alkalmazás lefagy. A fenti problémák nem fordulnak elő 32 bites alkalmazások esetén.

Minden DOS 16 bites alkalmazást szinkronban futtatnak. A cső és a 16 bites DOS alkalmazás összes szabványos bemenete ideiglenes fájlba kerül; a cső másik végét le kell zárni, mielőtt a 16 bites DOS alkalmazás megkezdődik. Minden szabványos kimenet vagy hiba egy 16 bites DOS alkalmazásból egy csőbe ideiglenes fájlokba kerül; az alkalmazásnak meg kell szakítania, mielőtt az ideiglenes fájlokat átirányítaná a csővezeték következő szakaszára. Ennek oka a Windows 95 hibájának megkerülése a csövek végrehajtásában, és az, hogy a szokásos Windows 95 DOS shell hogyan kezeli a csöveket.

Egyes alkalmazások, például a command.com , nem végezhetők interaktív módon. Azon alkalmazások, amelyek közvetlenül elérik a konzolablakot, és nem szabványos bemenetről olvasnak, és a szabványos kimenetükre írnak, sikertelenek lehetnek, lefagyhatják a Tcl-et, vagy akár fel is kapcsolhatják a rendszert, ha saját privát konzolablakuk nem áll rendelkezésükre.

Macintosh

Az exec parancs nem működik és nem létezik a Macintosh alatt.

Unix

Az exec parancs teljesen működőképes és a leírtak szerint működik.

Lásd még

hiba (n), nyitott (n)

Kulcsszavak

végrehajt, csővezeték, átirányítás, alfolyamat

Fontos: Az ember paranccsal ( % man ) tekintse meg, hogyan használják a parancsot az adott számítógépen.