Exec - Linux команда - Unix команда

exec - Повикај подпроцеси (и)

Синопсис

exec ? прекинувачи ? arg ? аргумент ... ?

Опис

Оваа команда ги третира своите аргументи како спецификација на една или повеќе подпроцеси за извршување. Аргументите се во форма на стандарден школка за трупци каде што секој аг станува еден збор на команда, и секоја посебна команда станува подпроцес.

Ако првичните аргументи за exec започнуваат со - тогаш тие се третираат како прекинувачи од командната линија и не се дел од спецификацијата на гасоводот. Во моментов се поддржани следниве прекинувачи:

-посебен нов

Задржува нова линија во излезот на гасоводот. Обично новата линија ќе биде избришана.

-

Го означува крајот на прекинувачите. Аргументот што следи по овој ќе се третира како прв аргумент, дури и ако започнува со - .

Ако arg (или пар на arg ) има една од формите опишани подолу, тогаш се користи од exec за контрола на протокот на влез и излез помеѓу потпроцесот (es). Таквите аргументи нема да бидат предадени на потпроцесот (и). Во форми како `` < fileName '' fileName може да биде или во посебен аргумент од `` <'' или во ист аргумент без интервентен простор (т.е. `` < fileName '').

|

Одвојува различни команди во цевководот. Стандардниот излез на претходната команда ќе биде насочен кон стандардниот влез на следната команда.

| &

Одвојува различни команди во цевководот. И стандардниот излез и стандардната грешка на претходната команда ќе бидат вклучени во стандардниот влез на следната команда. Оваа форма на пренасочување ги надминува формите како што се 2> и> &.

< fileName

Датотеката назначена од fileName е отворена и се користи како стандарден влез за првата команда во нафтоводот.

<@ fileId

FileId мора да биде идентификатор за отворена датотека, како на пример повратната вредност од претходниот повик за отворање . Се користи како стандарден влез за првата команда во нафтоводот. FileId мора да е отворена за читање.

<< вредност

Вредноста се пренесува на првата команда како стандарден влез.

> име на датотека

Стандардниот излез од последната команда се пренасочува кон датотеката наречена fileName , пребришејќи ја претходната содржина.

2> fileName

Стандардна грешка од сите команди во гасоводот се пренасочува кон датотеката наречена fileName , пребришувајќи ја претходната содржина.

> & fileName

И стандардниот излез од последната команда и стандардната грешка од сите команди се пренасочени кон датотеката со име fileName , пребришејќи ја претходната содржина.

>> fileName

Стандардниот излез од последната команда се пренасочува кон датотеката наречена fileName , додавајќи ја наместо да ја пребришува.

2 >> fileName

Стандардна грешка од сите команди во гасоводот се пренасочува кон датотеката наречена fileName , додавајќи ја наместо да ја пребришува.

>> & fileName

И стандардниот излез од последната команда и стандардната грешка од сите команди се пренасочени кон датотеката наречена fileName , дополнувајќи ја наместо да ја пребришуваат.

> @ fileId

FileId мора да биде идентификатор за отворена датотека, како на пример повратната вредност од претходниот повик за отворање . Стандардниот излез од последната команда е пренасочен на датотеката fileId , која мора да е отворена за пишување.

2> @ fileId

FileId мора да биде идентификатор за отворена датотека, како на пример повратната вредност од претходниот повик за отворање . Стандардна грешка од сите команди во нафтоводот е пренасочена на fileId датотеката. Датотеката мора да е отворена за пишување.

> & @ fileId

FileId мора да биде идентификатор за отворена датотека, како на пример повратната вредност од претходниот повик за отворање . И стандардниот излез од последната команда и стандардната грешка од сите команди се пренасочени на fileId датотеката. Датотеката мора да е отворена за пишување.

Ако стандардниот излез не е пренасочен тогаш командата exec го враќа стандардниот излез од последната команда во цевководот. Ако било која од командите во цевководот излегува ненормално или е убиена или суспендирана, тогаш exec ќе врати грешка и пораката за грешка ќе го вклучи излезот на гасоводот проследен со пораки за грешки кои ги опишуваат абнормалните прекини; променливата errorCode ќе содржи дополнителни информации за последниот абнормален прекин. Ако некоја од командите запиша во стандардната датотека со грешки и таа стандардна грешка не е пренасочена, тогаш exec ќе врати грешка; пораката за грешка ќе го вклучи стандардниот излез на гасоводот, по што следат пораки за абнормални завршетоци (доколку ги има), проследено со стандардниот излез за грешка.

Ако последниот знак на резултатот или пораката за грешка е нова линија тогаш тој лик е нормално избришан од резултатот или пораката за грешка. Ова е во согласност со другите вредности за враќање на Tcl, кои вообичаено не завршуваат со нови линии. Меѓутоа, ако е наведен -newline, тогаш заостанатите нови линии се задржуваат.

Ако стандардниот влез не е пренасочен со `` <'' или `` << '' или `` <@ '' тогаш стандардниот влез за првата команда во цевководот е земен од тековниот стандарден влез на апликацијата.

Ако последниот аргумент е `` & '', тогаш нафтоводот ќе биде извршен во позадина. Во овој случај, командата exec ќе врати листа чии елементи се идентификатори на процесот за сите подпроцеси во нафтоводот. Стандардниот излез од последната команда во гасоводот ќе оди во стандардниот излез на апликацијата ако не е пренасочен, а излезот од грешките од сите команди во гасоводот ќе оди во стандардна датотека за грешка на апликацијата, освен ако не се пренасочи.

Првиот збор во секоја команда се зема како командно име; на него се врши замена на тилда, и ако резултатот не содржи коса, тогаш директориумите во променливата на околината PATH пребаруваат за извршна датотека со даденото име. Ако името содржи коса црта, тогаш мора да се однесува на извршна датотека достапна од тековниот директориум. Нема "проширување" или други школка-како замени се вршат на аргументите за командите.

Прашања за преносливост

Windows (сите верзии)

Читањето од или запишување во сокет, користејќи ја ознаката `` @ fileId '', не функционира. Кога читате од приклучок, 16-битна DOS-апликација ќе се обеси и 32-битна апликација веднаш ќе се врати со крајот на датотеката. Кога било кој тип на апликација пишува во приклучок, информацијата се испраќа на конзолата, доколку е присутна или е отфрлена.

Графичкиот приказ на Tk конзолата не обезбедува вистински стандардни IO способности. Под Tk, кога се пренасочува од стандардниот влез, сите апликации ќе видат итна завршна датотека; информации пренасочени кон стандарден излез или стандардна грешка ќе бидат отфрлени.

Или напред или назад снимки се прифаќаат како патеки сепаратори за аргументи за Tcl командите. Кога извршувате некоја апликација, името на патеката одредена за апликацијата може исто така да ги содржи и чекорите за напред или назад како сепаратори на патот. Меѓутоа, имајте на ум дека повеќето Windows апликации ги прифаќаат аргументите со директни косини само како разграничувачи на опциите и коси црти само во патеки. Сите аргументи на апликација што го наведуваат името на патеката со коси цртички не се конвертираат автоматски за да го користат обратниот прозорец. Доколку аргументот содржи падови за чекори како сепаратор на патот, може или не може да се препознае како име на пат, во зависност од програмата.

Покрај тоа, кога повикувате 16-битна DOS или Windows 3.X апликација, сите имиња на патеки мора да користат краток, криптичен формат на пат (на пример, користејќи `applba ~ 1.def '' наместо` applbakery.default '' ).

Два или повеќе конуси за напред или назад во ред во патека се однесуваат на мрежната патека. На пример, едноставна конкатенација на root директориумот c: / со поддиректориум / windows / систем ќе даде c: // windows / system (две снимки заедно), што се однесува на точката за монтирање наречена систем на машината наречена windowsc: / се игнорира), и не е еквивалентно на c: / windows / system , кој опишува директориум на тековниот компјутер. Командата за приклучување на датотеки треба да се користи за да ги спојат компонентите на патеката.

Windows NT

Кога се обидувате да извршите некоја апликација, извршете прво барање за името како што е наведено. Потоа, по редослед, .com , .exe и .bat се додаваат до крајот на наведеното име и го бара подолгото име. Ако името на директориумот не е наведено како дел од името на апликацијата, следниве директориуми автоматски се пребаруваат по редослед кога се обидуваат да ја лоцираат апликацијата:

Директориумот од кој беше извршен Tcl извршувањето.
Тековниот директориум.
32-битен системски директориум на Windows NT.
Windows NT 16-битен системски директориум.
Домашен директориум на Windows NT.
Директориумите наведени во патеката.

Со цел да ги изврши командните команди како што се реж и копирање , повикувачот мора да подготви `` cmd.exe / c '' на саканата команда.

Windows 95

Кога се обидувате да извршите некоја апликација, извршете прво барање за името како што е наведено. Потоа, по редослед, .com , .exe и .bat се додаваат до крајот на наведеното име и го бара подолгото име. Ако името на директориумот не е наведено како дел од името на апликацијата, следниве директориуми автоматски се пребаруваат по редослед кога се обидуваат да ја лоцираат апликацијата:

Директориумот од кој беше извршен Tcl извршувањето.
Тековниот директориум.
Системски директориум на Windows 95.
Домашниот директориум за Windows 95.
Директориумите наведени во патеката.

Со цел да се изврши командата за вградени команди како реж и копирање , повикувачот мора да подготви `` command.com / c '' на саканата команда.

Откако 16-битна DOS-апликација ќе го прочита стандардниот влез од конзолата, а потоа ќе се повлече, сите последователно прикачени 16-битни DOS-апликации ќе го видат стандардниот влез како веќе затворен. 32-битни апликации немаат овој проблем и ќе работат правилно, дури и кога 16-битна DOS апликација смета дека стандардниот влез е затворен. Во овој момент не постои познат проблем за оваа бубачка.

Пренасочувањето помеѓу NUL: уредот и 16-битна апликација не секогаш функционира. Кога се пренасочува од NUL:, некои апликации може да висат, други ќе добијат бесконечен проток на `` 0x01 '' бајти, а некои, всушност, правилно ќе добијат итна завршна датотека; се чини дека однесувањето зависи од нешто што се собира во самата апликација. Кога пренасочува повеќе од 4K или така на NUL:, некои апликации ќе висат. Горенаведените проблеми не се случуваат со 32-битни апликации.

Сите DOS 16-битни апликации се извршуваат синхроно. Сите стандардни влез од цевка до 16-битна DOS-апликација се собираат во привремена датотека; другиот крај на цевката мора да биде затворен пред да започне 16-битната DOS апликација. Сите стандардни излез или грешка од 16-битна DOS-апликација до цевка се собираат во привремени датотеки; апликацијата мора да престане пред привремените датотеки да бидат пренасочени кон следната фаза на нафтоводот. Ова се должи на заобиколување на грешка во Windows 95 при имплементацијата на цевките и е како стандардната Windows 95 DOS-школка се справува со цевки.

Одредени апликации, како што е command.com , не треба да се извршуваат интерактивно. Апликациите кои директно пристапуваат кон прозорецот на конзолата, наместо да читаат од нивниот стандарден влез и пишување до нивниот стандарден излез, може да не успеат, да го обесат Tcl или дури да го обесат системот ако нивниот сопствен конзолен прозорец не е достапен за нив.

Macintosh

Командата exec не е имплементирана и не постои под Macintosh.

Unix

Командата exec е целосно функционална и работи како што е опишано.

Исто така види

грешка (n), отворен (n)

Клучни зборови

изврши, нафтовод, пренасочување, подпроцес

Важно: Користете ја командата за човекот ( % man ) за да видите како се користи командата на вашиот компјутер.