Exec - Linux Command - Unix-komento

exec - Kutsu osaprosessi (t)

tiivistelmä

exec ? kytkimet ? arg ? arg ... ?

Kuvaus

Tämä komento käsittelee argumenttejaan yhden tai useamman osaprosessin määrittelyä varten. Argumentit ovat muodoltaan standardi kuori putki, jossa jokainen arg tulee komento yhden sanan ja jokainen erillinen komento tulee aliprosessiksi.

Jos suorituksen alussa olevat argumentit alkavat - ne käsitellään komentorivivalitsimina eivätkä ole osa putkilinjan määritystä. Seuraavia kytkimiä tuetaan tällä hetkellä:

-keepnewline

Säilyttää jälkikäteen uuden rivin putkilinjan tuotoksessa. Tavallisesti jäljessä oleva uusi rivi poistetaan.

-

Merkitsee kytkimien loppumisen. Tätä seuraava argumentti käsitellään ensimmäisenä argumenttina, vaikka se alkaa myös - .

Jos arg (tai arg- parilla) on jokin jäljempänä kuvatuista muodoista, exec käyttää sen syöttämisen ja lähdön virtauksen ohjaamiseen aliprosessien (osuuksien) kesken. Tällaisia ​​argumentteja ei siirretä osaprosesseihin. Lomakkeissa, kuten `` < tiedostonimeä '' tiedostonimi voi joko olla erillisessä argumentissa `` <'' tai samassa argumentissa ilman välitilaa (eli `` < tiedostonimi ).

|

Erottaa erilliset komennot putkessa. Edellisen komennon standardilähde syötetään seuraavan komennon vakiotuloon.

| &

Erottaa erilliset komennot putkessa. Edellisen komennon vakiotuloste ja vakiovirhe johdetaan seuraavan komennon vakiotuloon. Tämä uudelleenohjauksen muoto ohittaa muodot, kuten 2> ja> &.

< tiedostonimi

FileName- niminen tiedosto avautuu ja sitä käytetään putkilinjan ensimmäisen komennon vakiotulona.

<@ fileId

FileId-tiedoston on oltava avoimen tiedoston tunniste, kuten edellisen puhelun palautusarvo avattavaksi . Sitä käytetään vakiotulona putkilinjan ensimmäiselle komennolle. FileId on avattu lukemaan.

<< arvo

Arvo syötetään ensimmäiseen komentoon vakiona.

> tiedostonimi

Viimeisen komennon vakiotuloste ohjataan tiedostoon nimeltä fileName , joka korvaa aiemman sisällön.

2> tiedostonimi

Kaikkien putkilinjan komentoja koskevat standardivirheet ohjataan tiedostoon nimeltä fileName , joka korvaa aiemman sisällön.

> & tiedostonimi

Sekä komentoista viimeisestä komennosta että vakioversiosta lähtevät standardilähteet ohjataan tiedostoon nimeltä fileName , joka korvaa aiemman sisällön.

>> tiedostonimi

Viimeisen komennon vakiotuloste ohjataan tiedostoon nimeltä fileName , joka liitetään siihen sen sijaan, että se korvaa sen.

2 >> tiedostonimi

Kaikkien putkilinjan komentojen standardivirhe ohjataan tiedostoon nimeltä fileName , joka liitetään siihen sen sijaan, että se korvaa sen.

>> & tiedostonimi

Sekä komentoista viimeisestä komennosta että vakiovirheestä lähtevät standardilähteet ohjataan tiedostoon nimeltä fileName , joka liitetään siihen sen sijaan, että se korvaa sen.

> @ fileId

FileId-tiedoston on oltava avoimen tiedoston tunniste, kuten edellisen puhelun palautusarvo avattavaksi . Viimeisen komennon vakiotuloste ohjataan fileId : n tiedostoon, joka on avattu kirjoitettavaksi.

2> @ fileId

FileId-tiedoston on oltava avoimen tiedoston tunniste, kuten edellisen puhelun palautusarvo avattavaksi . Kaikkien putkiston komentojen standardivirhe ohjataan tiedostoId: n tiedostoon. Tiedosto on avattava kirjallisesti.

> & @ fileId

FileId-tiedoston on oltava avoimen tiedoston tunniste, kuten edellisen puhelun palautusarvo avattavaksi . Sekä komentoista viimeisen komennon että vakiovirheen standardituotot ohjataan tiedostoId: n tiedostoon. Tiedosto on avattava kirjallisesti.

Jos vakiotulostusta ei ole ohjattu, exec- komento palauttaa standardilähdön viimeisestä putkilinjan komennosta. Jos jokin komentokehoteista poistuu epänormaalisti tai tapetaan tai keskeytetään, exec lähettää virheen ja virheilmoitus sisältää pipelineen tuoton ja sen jälkeen virheilmoitukset, jotka kuvaavat epänormaaleja päätteitä; errorCode- muuttuja sisältää lisätietoja viimeisestä epätavallisesta päättymisestä. Jos jokin komento kirjoittaa standardivirhetiedostoonsa ja että standardivirhe ei ole ohjattu, exec lähettää virheen; virheviesti sisältää putkilinjan vakiotuloksen, jota seuraa epänormaaleja päätteitä koskevia viestejä (jos sellaisia ​​on), jota seuraa standardivirhe.

Jos tuloksen tai virhesanoman viimeinen merkki on uusi rivinvaihto, merkki poistuu normaalisti tulos- tai virhesanomasta. Tämä on yhdenmukainen muiden Tcl-palautusarvojen kanssa, jotka eivät tavallisesti päädy uudelle riville. Kuitenkin, jos -keepnewline on määritetty, jäljessä oleva uusiline säilytetään.

Jos vakiotuloa ei ohjata `` <'' tai `` << '' tai `` <@ '', sitten putkilinjan ensimmäisen komennon vakiotulo otetaan sovelluksen nykyisestä vakiotulosta.

Jos viimeinen argumentti on `` & '', putki suoritetaan taustalla. Tällöin exec- komento palauttaa luettelon, jonka elementit ovat prosessin tunnisteet kaikille putkilinjan aliprosesseille. Standardin ulostulo putkilinjan viimeisestä komennosta siirtyy sovelluksen vakiotulokseen, jos sitä ei ole ohjattu, ja kaikkien putkilinjan komentoja koskevat virheet siirtyvät sovelluksen vakiovirhetiedostoon, jollei niitä ohjata uudelleen.

Kunkin komennon ensimmäinen sana otetaan komentojen nimeksi; tilde-substitution suoritetaan, ja jos tuloksessa ei ole viivoja, PATH-ympäristömuuttujan hakemistoja etsitään suoritettavan nimen mukaan. Jos nimessä on viiva, sen on viitattava nykyiseen hakemistoon tavoitettavissa olevaan suoritustiedostoon. Komennoilla ei ole mitään `` glob '' laajennusta tai muita kuorien kaltaisia ​​korvauksia.

Siirrettävyysongelmat

Windows (kaikki versiot)

Lukeminen tai kirjoittaminen pistorasiaan käyttäen `` @ fileId '' -merkintää ei toimi. 16-bittinen DOS-sovellus riippuu kannesta, kun 32-bittinen sovellus palaa heti tiedoston loppuun. Kun jokin sovellusmuoto kirjoitetaan pistorasiaan, tiedot siirretään sen sijaan konsoliin, jos sellainen on läsnä tai hylätään.

Tk-konsolin tekstihakemisto ei tarjoa todellista standardin IO-ominaisuutta. Tk: ssa, kun ohjataan uudelleen vakiotulosta, kaikki sovellukset näkevät välittömän loppu-tiedoston; vakiolähdölle tai standardivirheelle ohjatut tiedot hylätään.

Joko taaksepäin tai taaksepäin olevat viivat hyväksytään reittierotuksiksi argumentteille Tcl-komennoille. Sovellusta suoritettaessa sovellukseen määritetty polun nimi voi sisältää myös eteen- tai taaksepäin olevia viivoja polun erottimina. Muista kuitenkin, että useimmat Windows-sovellukset hyväksyvät argumentteja, joissa on viivytysviivejä vain vaihtoehtorajoittajina ja vastavalikoina vain poluissa. Sovelluksen argumentit, jotka määrittävät polun nimen raja-arvojen välityksellä, ei automaattisesti muunneta käyttämään taaksepäin-merkkiä. Jos argumentti sisältää reittierottimen eteenpäin viivoittavia viivoja, se voidaan tunnistaa polun nimeksi ohjelmasta riippuen.

Lisäksi, kun soitat 16-bittistä DOS- tai Windows 3.X -ohjelmaa, kaikkien polunimien on käytettävä lyhyttä, salaavaa, polkuformaattia (esim. `Applba ~ 1.def ',` applbakery.default' ).

Reitillä peräkkäin kaksi tai useampia eteen- tai taakseja viivoja viittaa verkkopolkuun. Esimerkiksi juurihakemiston yksinkertainen ketjuttaminen c: / alihakemisto / windows / -järjestelmällä tuottaa c: // windows / system (kaksi viivaa yhteen), joka viittaa koneeseen nimeltä kutsuttuun asennuspisteeseen nimeltä windows (ja c: / jätetään huomiotta), eikä se vastaa c: / windows / system , joka kuvaa nykyisen tietokoneen hakemiston. File join -komentoa tulisi käyttää polun komponenttien ketjuttamiseen.

Windows NT

Kun yrität suorittaa sovelluksen, exec etsii ensin nimen nimenomaisesti. Tällöin järjestyksessä, .com , .exe ja .bat liitetään määritetyn nimen loppuun ja etsii pidemmän nimen. Jos hakemiston nimeä ei ole määritetty osana sovelluksen nimeä, seuraavia hakemistoja etsitään automaattisesti, kun yrität etsiä sovelluksen:

Hakemisto, josta Tcl-suoritustiedosto ladattiin.
Nykyinen hakemisto.
Windows NT 32-bittinen järjestelmähakemisto.
Windows NT: n 16-bittinen järjestelmähakemisto.
Windows NT: n kotihakemisto.
Polussa luetellut hakemistot.

Jotta shell-sisäänrakennetut komennot, kuten dir ja kopioidaan , soittajan on esitettävä `` cmd.exe / c '' haluttuun komentoon.

Windows 95

Kun yrität suorittaa sovelluksen, exec etsii ensin nimen nimenomaisesti. Tällöin järjestyksessä, .com , .exe ja .bat liitetään määritetyn nimen loppuun ja etsii pidemmän nimen. Jos hakemiston nimeä ei ole määritetty osana sovelluksen nimeä, seuraavia hakemistoja etsitään automaattisesti, kun yrität etsiä sovelluksen:

Hakemisto, josta Tcl-suoritustiedosto ladattiin.
Nykyinen hakemisto.
Windows 95 -järjestelmänhakemisto.
Windows 95-kotihakemisto.
Polussa luetellut hakemistot.

Jotta shell-sisäänrakennetut komennot, kuten dir ja kopioidaan , soittajan on esitettävä `` command.com / c '' haluttuun komentoon.

Kun 16-bittinen DOS-sovellus on lukenut konsolista tavanomaisen syötteen ja sitten lopettaa, kaikki 16-bittiset DOS-sovellukset myöhemmin näyttävät vakiotulon jo suljettuna. 32-bittisissä sovelluksissa ei ole tätä ongelmaa, ja ne toimivat oikein, vaikka 16-bittinen DOS-sovellus ajattelisi, että standardi tulo on suljettu. Tällä bugilla ei ole tunnettua ongelmanratkaisua.

NUL: laitteen ja 16-bittisen sovelluksen välinen uudelleenohjaus ei aina toimi. Kun ohjataan NUL: lta : jotkin sovellukset voivat jäädä kiinni, toiset saavat ääretön "0x01" tavut, ja jotkut todella saavat välittömästi tiedoston loppuosan; käyttäytyminen näyttäisi olevan riippuvainen sovelluksesta itse laaditusta. Kun ohjataan yli 4 k tai enemmän NUL: lle , jotkin sovellukset jumittuvat. Edellä mainittuja ongelmia ei tapahdu 32-bittisten sovellusten kanssa.

Kaikki 16-bittiset DOS-sovellukset suoritetaan synkronisesti. Kaikki standardi tulo putkesta 16-bittiseen DOS-sovellukseen kerätään väliaikaiseen tiedostoon; putken toinen pää on suljettava ennen 16-bittisen DOS-sovelluksen alkamista. Kaikki 16-bittisen DOS-sovelluksen vakiotulostus tai -virhe putkeen kerätään väliaikaisiin tiedostoihin; sovelluksen on päätyttävä ennen kuin väliaikaiset tiedostot ohjataan putkilinjan seuraavaan vaiheeseen. Tämä johtuu Windows 95 -virheen kiertotavasta putkien toteutuksessa ja siitä, miten standardi Windows 95 DOS -kuori käsittelee putket itse.

Tiettyjä sovelluksia, kuten command.com , ei saa suorittaa interaktiivisesti. Sovellukset, jotka pääsevät suoraan konsoli-ikkunaan sen sijaan, että ne lukevat tavallisesta tulostaan ​​ja kirjoitusstään vakiotulosteeseensa, saattavat epäonnistua, ripustaa Tcl: n tai jopa ripustaa järjestelmän, jos heidän oma konsolin ikkuna ei ole heille käytettävissä.

kumisadetakkikangas

Exec- komentoa ei ole toteutettu eikä sitä ole Macintoshissa.

unix

Exec- komento on täysin toimiva ja toimii kuten kuvattu.

Katso myös

virhe (n), avoin (n)

Avainsanat

suorittaa, putki, uudelleenohjaus, osaprosessi

Tärkeää: Käytä man- komentoa ( % man ) nähdäksesi kuinka komentoa käytetään tietyssä tietokoneessa.