Exec - Linux Command - Unix Command

exec - Invoke subproses (s)

opsomming

exec ? skakelaars ? arg ? arg ... ?

beskrywing

Hierdie opdrag behandel sy argumente as die spesifikasie van een of meer subprosesse om uit te voer. Die argumente het die vorm van 'n standaard doppyplyn waar elke arg een woord van 'n opdrag word, en elke afsonderlike opdrag word 'n subproses.

As die aanvanklike argumente van exec begin , dan word hulle behandel as skakelaars en nie deel van die pyplynspesifikasie nie. Die volgende skakelaars word tans ondersteun:

-keepnewline

Behou 'n nuwe lyn in die pyplyn se uitset. Normaalweg word 'n nuwe naslaanbaan uitgevee.

-

Merk die einde van skakelaars. Die argument wat hierdie een volg, sal as die eerste arg beskou word, selfs as dit begin met 'n - .

As 'n arg (of paar args ) een van die onderstaande vorms het, word dit deur exec gebruik om die vloei van insette en uitset onder die subproses (s) te beheer. Sulke argumente sal nie aan die subproses (e) oorgedra word nie. In vorms soos `` < lêernaam '' lêernaam kan óf in 'n aparte argument wees van `` <'' of in dieselfde argument sonder tussenliggende spasie (dws `` < lêernaam '').

|

Skei afsonderlike opdragte in die pyplyn. Die standaard uitvoer van die voorafgaande opdrag word in die standaard invoer van die volgende opdrag gepypeer.

| &

Skei afsonderlike opdragte in die pyplyn. Beide standaarduitset en standaardfout van die voorafgaande opdrag word in die standaard invoer van die volgende opdrag ingespuit. Hierdie vorm van omruiling oortree vorms soos 2> en> &.

< lêernaam

Die lêer genaamd lêernaam word geopen en word gebruik as die standaard invoer vir die eerste opdrag in die pyplyn.

<@ fileId

FileId moet die identifiseerder vir 'n oop lêer wees, soos die terugkeerwaarde van 'n vorige oproep om oop te maak . Dit word gebruik as die standaard invoer vir die eerste opdrag in die pyplyn. FileId moet oopgemaak wees vir lees.

<< waarde

Waarde word geslaag na die eerste opdrag as die standaard invoer.

> lêernaam

Standaard uitvoer van die laaste opdrag word na die lêer genaamd lêernaam herlei, wat sy vorige inhoud oorskryf.

2> lêernaam

Standaardfout van alle opdragte in die pyplyn word na die lêer genaamd lêernaam herlei, wat die vorige inhoud oorskryf.

> & lêernaam

Beide standaard uitvoer van die laaste opdrag en standaard fout van alle opdragte word na die lêer genaamd lêernaam herlei, wat sy vorige inhoud oorskryf.

>> lêernaam

Standaard uitvoer van die laaste opdrag word na die lêer genaamd lêernaam herlei, byvoeg dit eerder as om dit te oorskryf.

2 >> lêernaam

Standaardfout van alle opdragte in die pyplyn word na die lêer genaamd lêernaam herlei, byvoeging daarvan, eerder as om dit te oorskryf.

>> & lêernaam

Beide standaard uitvoer van die laaste opdrag en standaard fout van alle opdragte word na die lêer genaamd lêernaam herlei, byvoeging daarvan, eerder as om dit te oorskryf.

> @ fileId

FileId moet die identifiseerder vir 'n oop lêer wees, soos die terugkeerwaarde van 'n vorige oproep om oop te maak . Standaard uitvoer van die laaste opdrag word na die lêer se lêer oorgedra , wat oopgemaak moet word vir skryf.

2> @ fileId

FileId moet die identifiseerder vir 'n oop lêer wees, soos die terugkeerwaarde van 'n vorige oproep om oop te maak . Standaard fout van alle opdragte in die pyplyn word na fileId se lêer verwys. Die lêer moet oopgemaak wees vir skryf.

> & @ fileId

FileId moet die identifiseerder vir 'n oop lêer wees, soos die terugkeerwaarde van 'n vorige oproep om oop te maak . Beide standaard uitvoer van die laaste opdrag en standaard fout van alle opdragte word na fileId se lêer herlei. Die lêer moet oopgemaak wees vir skryf.

As die standaard uitvoer nie herlei is nie, gee die exec- opdrag die standaard uitvoer van die laaste opdrag in die pyplyn. As enige van die bevele in die pyplyn abnormaal verlaat of doodgemaak of opgeskort word, sal exec ' n fout terugbring en die foutboodskap sal die pyplyn se uitset insluit, gevolg deur foutboodskappe wat die abnormale beëindigings beskryf; die errorCode- veranderlike bevat bykomende inligting oor die laaste abnormale beëindiging wat voorkom. As enige van die opdragte na die standaard fout lêer skryf en die standaard fout nie herlei word nie, sal exec ' n fout terugstuur; Die foutboodskap sal die standaard uitvoer van die pyplyn insluit, gevolg deur boodskappe oor abnormale beëindigings (indien enige), gevolg deur die standaard foutuitset.

As die laaste karakter van die resultaat of foutboodskap 'n nuwe lyn is, word daardie karakter gewoonlik verwyder uit die resultaat of foutboodskap. Dit is in ooreenstemming met ander Tcl-terugwaardes, wat normaalweg nie met nuwe lyne eindig nie. Maar as -keepnewline gespesifiseer word, word die agterliggende newline behou.

As standaard invoer nie met `` <'' of `` << '' of `` <@ '' verwys word nie, word die standaard invoer vir die eerste opdrag in die pyplyn geneem uit die huidige standaardinvoer van die program.

As die laaste arg `` & '' is, sal die pyplyn in die agtergrond uitgevoer word. In hierdie geval sal die exec- opdrag 'n lys terugstuur wie se elemente die prosesidentifikators vir al die subprosesse in die pyplyn is. Die standaard uitvoer van die laaste opdrag in die pyplyn sal na die standaard uitvoer van die program gaan as dit nie herlei is nie en die foutuitset van al die opdragte in die pyplyn sal na die program se standaardfoutlêer gaan, tensy gerig.

Die eerste woord in elke opdrag word as die bevelnaam geneem; Tilde-substitusie word daardeur uitgevoer, en as die resultaat geen skuins bevat nie, word die dopgehou in die PATH omgewing veranderlike gesoek vir 'n uitvoerbare deur die gegewe naam. As die naam 'n slash bevat, moet dit verwys na 'n uitvoerbare uitvoerbare uit die huidige gids. Geen `` glob''-uitbreiding of ander dopagtige substitusies word op die argumente uitgevoer aan opdragte nie.

Portability Issues

Windows (alle weergawes)

Lees of skryf na 'n sok, met die `` @ fileId''notasie , werk nie. Wanneer u vanaf 'n sok lees, sal 'n 16-bis DOS-program hang en 'n 32-bis-aansoek sal onmiddellik met die einde van die lêer terugbesorg word. Wanneer enige tipe aansoek na 'n sok geskryf word, word die inligting eerder na die konsole gestuur, as een teenwoordig is of weggegooi word.

Die Tk-konsole teks widget bied nie werklike standaard IO vermoëns. Onder Tk, wanneer dit vanaf standaard insette herlei word, sal alle toepassings 'n onmiddellike einde van die lêer sien; inligting wat na standaarduitvoer of standaardfout herlei word, sal weggegooi word.

Of vorentoe of agtertoe skuins word aanvaar as padafskeidings vir argumente aan Tcl-opdragte. Wanneer 'n aansoek uitgevoer word, kan die padnaam wat vir die program gespesifiseer is, ook voor- of agtertoe-skuins as padafskeidings bevat. Hou egter in gedagte dat die meeste Windows-toepassings argumente aanvaar met die voorste skuins slegs as opsie-afbakeninge en terugslae net in paaie. Enige argumente vir 'n program wat 'n padnaam spesifiseer met vorentoe strepies, sal nie outomaties omgeskakel word om die terugslagkarakter te gebruik nie. As 'n argument voorstellings bevat as die padafskeider, word dit dalk as 'n padnaam erken, afhangende van die program.

By die aanroep van 'n 16-bis DOS- of Windows 3.X-program moet alle padname ook die kort, kriptiese padformaat gebruik (bv. Gebruik `` applba ~ 1.def '' in plaas van `` applbakery.default '' ).

Twee of meer vorentoe of agtertoe skuins in 'n ry in 'n pad verwys na 'n netwerkpad. Byvoorbeeld, 'n eenvoudige samevoeging van die wortelgids c: / met 'n subdirectory / vensters / stelsel sal c: // vensters / stelsel (twee skuins saam) oplewer, wat verwys na die bergpunt genoem stelsel op die masjien genaamd vensters (en die c: / word geïgnoreer), en is nie gelyk aan c: / windows / system , wat 'n gids op die huidige rekenaar beskryf nie. Die lêer-deel opdrag moet gebruik word om padkomponente te koppel.

Windows NT

Wanneer u 'n aansoek probeer uitvoer, soek exec eers na die naam soos dit gespesifiseer is. Dan word in volgorde, .com , .exe en .bat aan die einde van die gespesifiseerde naam aangeheg. Dit soek na die langer naam. As 'n gidsnaam nie as deel van die aansoeknaam gespesifiseer is nie, word die volgende dopgehou outomaties deurgaans gesoek wanneer hulle probeer om die aansoek te vind:

Die gids waaruit die Tcl uitvoerbare gelaai is.
Die huidige gids.
Die Windows NT 32-bis stelsel gids.
Die Windows NT 16-bis stelsel gids.
Die Windows NT tuisgids.
Die dopgehou in die pad.

Om die dop te bou wat in opdragte soos dir en kopie aangebring is, moet die oproeper `` cmd.exe / c '' op die verlangde opdrag plaas.

Windows 95

Wanneer u 'n aansoek probeer uitvoer, soek exec eers na die naam soos dit gespesifiseer is. Dan word in volgorde, .com , .exe en .bat aan die einde van die gespesifiseerde naam aangeheg. Dit soek na die langer naam. As 'n gidsnaam nie as deel van die aansoeknaam gespesifiseer is nie, word die volgende dopgehou outomaties deurgaans gesoek wanneer hulle probeer om die aansoek te vind:

Die gids waaruit die Tcl uitvoerbare gelaai is.
Die huidige gids.
Die Windows 95-stelsel gids.
Die Windows 95 tuisgids.
Die dopgehou in die pad.

Om die dop te bou wat in opdragte soos dir en kopie aangebring is, moet die oproeper `` command.com / c '' op die verlangde opdrag plaas.

Sodra 'n 16-bis DOS-program die standaard invoer van 'n konsole gelees het en dan ophou, sal alle daaropvolgende 16-bis DOS-toepassings die standaardinvoer sien soos reeds gesluit. 32-bis-toepassings het nie hierdie probleem nie en sal korrek hardloop, selfs nadat 'n 16-bis DOS-toepassing dink dat die standaard insette gesluit is. Daar is tans geen bekende oplossing vir hierdie fout nie.

Omskakeling tussen die NUL: toestel en 'n 16-bis program werk nie altyd nie. By die aanstuur van NUL:, kan sommige toepassings hang, ander sal 'n oneindige stroom van `` 0x01''bytes kry, en sommige sal eintlik 'n onmiddellike einde van die lêer kry. die gedrag lyk afhanklik van iets wat in die aansoek self saamgestel is. As u meer as 4K na NUL aanstuur, sal sommige toepassings hang. Bogenoemde probleme gebeur nie met 32-bits toepassings nie.

Alle DOS 16-bis programme word sinchronies uitgevoer. Alle standaard insette van 'n pyp na 'n 16-bis DOS-program word in 'n tydelike lêer versamel; Die ander kant van die pyp moet gesluit wees voordat die 16-bits DOS-program begin uitvoer. Alle standaard uitvoer of foute vanaf 'n 16-bis DOS-toepassing na 'n pyp word versamel in tydelike lêers; die aansoek moet beëindig voordat die tydelike lêers na die volgende fase van die pyplyn herlei word. Dit is as gevolg van 'n oplossing vir 'n Windows 95-bug in die implementering van pype, en is hoe die standaard Windows 95 DOS-skerm self die pype hanteer.

Sekere toepassings, soos command.com , moet nie interaktief uitgevoer word nie. Aansoeke wat direk toegang tot die konsolvenster kry, eerder as om te lees van hul standaard insette en skryf na hul standaard uitvoer, kan misluk, Tcl hang of selfs die stelsel hang as hul eie privaat konsole venster nie beskikbaar is nie.

Macintosh

Die exec- opdrag is nie geïmplementeer nie en bestaan ​​nie onder Macintosh nie.

Unix

Die exec bevel is ten volle funksioneel en werk soos beskryf.

Sien ook

fout (n), oop (n)

sleutelwoorde

uitvoer, pyplyn, herleiding, subproses

Belangrik: Gebruik die man opdrag ( % man ) om te sien hoe 'n opdrag op u rekenaar gebruik word.