exec - Invoke delprocess (er)
Synopsis
exec? afbrydere ? arg ? arg … ?
Beskrivelse
Denne kommando behandler sine argumenter som specifikationen af en eller flere delprocesser, der skal udføres. Argumenterne har form af en standard skal rørledning hvor hver arg bliver et ord af en kommando, og hver enkelt kommando bliver en delproces.
Hvis de oprindelige argumenter tilexec start med- så behandles de som kommandolinjebryttere og er ikke en del af rørledningsspecifikationen. Følgende switche understøttes i øjeblikket:
-keepnewline
Beholder en efterfølgende ny linje i rørledningens output. Normalt slettes en efterfølgende nylinje.
--
Markerer slutningen af kontakterne. Argumentet efter denne vil blive behandlet som den første arg selvom det starter med a-.
Hvis en arg (eller par af arg s) har en af formularerne beskrevet nedenfor, så den bruges afexec at styre strømmen af input og output mellem delprocesserne. Sådanne argumenter vil ikke blive overført til delprocessen. I formularer som `` < filnavn '' filnavn kan enten være i et særskilt argument fra `` <'' eller i samme argument uden mellemrum (dvs. `` < filnavn '').
|
Separerer forskellige kommandoer i rørledningen. Standardudgangen fra den foregående kommando vil blive ledet ind i standardindgangen af den næste kommando.
|&
Separerer forskellige kommandoer i rørledningen. Både standardudgang og standardfejl for den foregående kommando vil blive ledet ind i standardindgangen til den næste kommando. Denne form for omdirigering overtræder former som 2> og> &.
< filnavn
Filen hedder af filnavn åbnes og bruges som standardindgang til den første kommando i rørledningen.
<@ fileId
FileId skal være identifikator for en åben fil, f.eks. returværdien fra et tidligere opkald tilåben. Den bruges som standardindgang til den første kommando i rørledningen. FileId skal være åbnet til læsning.
<< værdi
Værdi sendes til den første kommando som standardindgang.
> filnavn
Standard output fra den sidste kommando omdirigeres til den navngivne fil filnavn , overskriver sit tidligere indhold.
2> filnavn
Standardfejl fra alle kommandoer i rørledningen omdirigeres til den navngivne fil filnavn , overskriver sit tidligere indhold.
>& filnavn
Både standard output fra den sidste kommando og standardfejl fra alle kommandoer omdirigeres til den navngivne fil filnavn , overskriver sit tidligere indhold.
>> filnavn
Standard output fra den sidste kommando omdirigeres til den navngivne fil filnavn , tilføjer det i stedet for at overskrive det.
2>> filnavn
Standardfejl fra alle kommandoer i rørledningen omdirigeres til den navngivne fil filnavn , tilføjer det i stedet for at overskrive det.
>>& filnavn
Både standard output fra den sidste kommando og standardfejl fra alle kommandoer omdirigeres til den navngivne fil filnavn , tilføjer det i stedet for at overskrive det.
>@ fileId
FileId skal være identifikator for en åben fil, f.eks. returværdien fra et tidligere opkald tilåben. Standard output fra den sidste kommando omdirigeres til fileId s fil, som skal være åbnet til skrivning.
2>@ fileId
FileId skal være identifikator for en åben fil, f.eks. returværdien fra et tidligere opkald tilåben. Standardfejl fra alle kommandoer i rørledningen omdirigeres til fileId s fil. Filen skal være åbnet til skrivning.
>&@ fileId
FileId skal være identifikator for en åben fil, f.eks. returværdien fra et tidligere opkald tilåben. Både standard output fra den sidste kommando og standardfejl fra alle kommandoer omdirigeres til fileId s fil. Filen skal være åbnet til skrivning.
Hvis standard output ikke er omdirigeret, så erexec kommando returnerer standard output fra den sidste kommando i rørledningen. Hvis nogen af kommandoerne i rørledningen afgår unormalt eller dræbes eller suspenderes, såexec vil returnere en fejl, og fejlmeddelelsen vil indeholde pipelineens output efterfulgt af fejlmeddelelser, der beskriver de unormale afslutninger; detFejlkode variabel vil indeholde yderligere oplysninger om den sidste abnormale opsigelse. Hvis nogen af kommandoerne skriver til sin standardfejlfil, og at standardfejlen ikke omdirigeres, såexec vil returnere en fejl Fejlmeddelelsen vil indeholde pipelineens standard output, efterfulgt af meddelelser om unormale terminationer (hvis nogen), efterfulgt af standardfejludgangen.
Hvis den sidste karakter af resultatet eller fejlmeddelelsen er en ny linje, fjernes det pågældende tegn normalt fra resultatet eller fejlmeddelelsen. Dette er i overensstemmelse med andre Tcl-returværdier, som normalt ikke slutter med nye linjer. Men hvis-keepnewline er angivet, så tilbageholdes den efterfølgende newline.
Hvis standardindtastningen ikke omdirigeres med `` <'' eller `` << '' eller `` <@ '', hentes standardindgangen for den første kommando i rørledningen fra applikationens aktuelle standardindgang.
Hvis den sidste arg er `` & '' så bliver rørledningen udført i baggrunden. I dette tilfælde erexeckommando vil returnere en liste, hvis elementer er procesidentifikatorer for alle delprocesserne i rørledningen.Standardudgangen fra den sidste kommando i rørledningen går til programmets standardudgang, hvis den ikke er omdirigeret, og fejludgangen fra alle kommandoer i rørledningen går til programmets standardfejlfil, medmindre omdirigeret.
Det første ord i hver kommando er taget som kommandoenavn; Tilde-substitution udføres på den, og hvis resultatet ikke indeholder nogen skråstreger, søges katalogerne i PATH-miljøvariabelen for en eksekverbar med det angivne navn. Hvis navnet indeholder et skråstreg, skal det referere til en eksekverbar tilgængelig fra den aktuelle mappe. Ingen `` glob''-ekspansion eller andre skallignende substitutioner udføres på argumenterne til kommandoer.
Portabilitetsproblemer
vinduer (alle versioner)
Læsning fra eller skrivning til en stikkontakt, ved hjælp af ``@ fileId '' notation, virker ikke. Når du læser fra en stikkontakt, hænger en 16-bit DOS-applikation, og en 32-bit applikation vender straks tilbage med slutningen af filen. Når enhver type applikation skriver til en stikkontakt, sendes oplysningerne i stedet til konsollen, hvis en er til stede eller kasseres.
Tekst-widgeten til Tk-konsol giver ikke reelle standard IO-funktioner. Under Tk, når der omdirigeres fra standardindgang, vil alle applikationer se en øjeblikkelig slutning af fil; Oplysninger omdirigeret til standard output eller standardfejl vil blive kasseret.
Enten fremad eller bagud skråstreger accepteres som stilseparatorer for argumenter til Tcl-kommandoer. Når der udføres en applikation, kan stienavnet, der er angivet for programmet, også indeholde skråstreger fremad eller bagud som stilseparatorer. Husk dog, at de fleste Windows-applikationer accepterer argumenter med fremadskårne skråstreger kun som indstillingsbegrænsere og backslashes kun i stier. Eventuelle argumenter til en applikation, der angiver et stinavn med fremadskårne skråstreger, konverteres ikke automatisk til at bruge backslash karakteren. Hvis et argument indeholder fremadskårne skråstreger som stilseparatoren, kan det eller ikke blive anerkendt som et stinavn, afhængigt af programmet.
Når du kalder en 16-bit DOS- eller Windows 3.X-applikation, skal alle stinavn også bruge det korte kryptiske stiformat (f.eks. Ved at bruge `` applba ~ 1.def '' i stedet for `` applbakery.default '' ).
To eller flere skråstreger fremad eller bagud i en sti henviser til en netværkssti. For eksempel en simpel sammenkædning af rodmappenc: / med en undermappe/ Vinduer / system vil givec: // vinduer / system (to skråstreger sammen), som refererer til det beregnede monteringspunktsystem på den kaldte maskinevinduer (ogc: / ignoreres), og svarer ikke tilc: / windows / system, som beskriver en mappe på den aktuelle computer. Detfil tilmeld kommando skal bruges til at sammenkæde sti komponenter.
Windows NT
Når du forsøger at udføre en ansøgning,exec søger først efter navnet som det blev angivet. Så i orden,.com, .exe, og.flagermus vedhæftes til slutningen af det angivne navn, og det søger efter det længere navn. Hvis et katalognavn ikke blev angivet som en del af ansøgningsnavnet, søges de følgende mapper automatisk i rækkefølge, når de forsøger at finde programmet:
Den mappe, hvorfra Tcl-kørslen blev lastet.Den aktuelle mappe.Windows NT 32-bit systemkatalog.Windows NT 16-bit systemkatalog.Windows NT-hjemmemappen.De mapper, der er angivet i stien. For at udføre shell indbyggede kommandoer somdir ogkopi, skal opkalderen udfylde ``cmd.exe / c'' til den ønskede kommando. Windows 95 Når du forsøger at udføre en ansøgning,exec søger først efter navnet som det blev angivet. Så i orden,.com, .exe, og.flagermus vedhæftes til slutningen af det angivne navn, og det søger efter det længere navn. Hvis et katalognavn ikke blev angivet som en del af ansøgningsnavnet, søges de følgende mapper automatisk i rækkefølge, når de forsøger at finde programmet: Den mappe, hvorfra Tcl-kørslen blev lastet.Den aktuelle mappe.Windows 95-systemkatalogen.Windows 95 home directory.De mapper, der er angivet i stien. For at udføre shell indbyggede kommandoer somdir ogkopi, skal opkalderen udfylde ``command.com / c'' til den ønskede kommando. Når en 16-bit DOS-applikation har læst standardindgang fra en konsol og derefter afslutter, vil alle efterfølgende 16-bit DOS-applikationer se standardindgangen som allerede lukket. 32-bit applikationer har ikke dette problem og vil køre korrekt, selv efter at en 16-bit DOS-applikation mener, at standardindgangen er lukket. Der er ingen kendt løsning for denne fejl på dette tidspunkt. Omdirigering mellemNUL: enhed og en 16-bit applikation virker ikke altid. Når omdirigeres fraNUL:, nogle applikationer kan hænge, andre vil få en uendelig strøm af `` 0x01 '' bytes, og nogle vil faktisk få en umiddelbar slutning af filen; adfærd synes at afhænge af noget, der er samlet i selve ansøgningen. Når omdirigering større end 4K eller så tilNUL:, nogle applikationer vil hænge. Ovennævnte problemer sker ikke med 32-bit applikationer. Alle DOS 16-bit applikationer køres synkront. Alle standardindgange fra et rør til en 16-bit DOS-applikation indsamles i en midlertidig fil; Den anden ende af røret skal lukkes, før 16-bit DOS-applikationen begynder at køre.All standard output eller fejl fra en 16-bit DOS-applikation til et rør samles i midlertidige filer; ansøgningen skal opsiges, før de midlertidige filer omdirigeres til næste fase af rørledningen. Dette skyldes en løsning for en Windows 95 fejl i implementeringen af rør, og hvordan standard Windows 95 DOS shell håndterer rørene selv. Visse applikationer, f.ekscommand.com, bør ikke udføres interaktivt. Applikationer, der direkte kommer ind i konsolvinduet, frem for at læse fra deres standardindgang og skrive til deres standardudgang, kan mislykkes, hænge Tcl eller endda hænge systemet, hvis deres eget private konsolvindue ikke er tilgængeligt for dem. Macintosh Detexec kommandoen er ikke implementeret og findes ikke under Macintosh. Unix Detexec kommandoen er fuldt funktionel og fungerer som beskrevet. fejl (n), åben (n) udføre, rørledning, omdirigering, delproces Vigtig: Brug mand kommando ( % mand ) for at se, hvordan en kommando bruges på din computer. Se også
nøgleord




