exec - Извикване на подпроцес (и)
резюме
EXEC? превключватели ? арг ? арг … ?
описание
Тази команда третира аргументите си като спецификация на една или повече подпроцеси за изпълнение. Аргументите са под формата на стандартен тръбопровод, където всеки от тях арг става дума за команда и всяка отделна команда става подпроцес.
Ако първоначалните аргументи къмEXEC Започни с- те се третират като комутатори на командния ред и не са част от спецификацията на тръбопровода. Понастоящем се поддържат следните ключове:
-keepnewline
Запазва нов ред в изхода на тръбопровода. Обикновено нов ред ще бъде изтрит.
--
Маркира края на превключвателите. Аргументът, следващ този, ще се разглежда като първият арг дори ако започва с a-.
Ако е арг (или двойка от арг ) има една от формите, описани по-долу, след това се използва отEXEC за контролиране на потока от вход и изход между подпроцес (ите). Такива аргументи няма да бъдат предадени на подпроцеса (ите). Във формули като `` < име на файл '' име на файл може да е в отделен аргумент от `` <'' или в същия аргумент без интервал (т.е. `` име на файл '').
|
Раздели отделни команди в тръбопровода. Стандартният изход на предишната команда ще бъде включен в стандартния вход на следващата команда.
|&
Раздели отделни команди в тръбопровода. Както стандартният изход, така и стандартната грешка на предходната команда ще бъдат въведени в стандартния вход на следващата команда. Тази форма на пренасочване замества форми като 2> и>.
< име на файл
Файлът, наречен от име на файл се отваря и се използва като стандартен вход за първата команда в тръбопровода.
<@ fileId
FileId трябва да бъде идентификатор за отворен файл, като например стойността за връщане от предишно повикване доотворен, Той се използва като стандартен вход за първата команда в тръбопровода. FileId трябва да са отворени за четене.
<< стойност
стойност се предава на първата команда като стандартен вход.
> име на файл
Стандартният изход от последната команда се пренасочва към името на файла име на файл , като презаписва предишното си съдържание.
2> име на файл
Стандартната грешка от всички команди в тръбопровода се пренасочва към името на файла име на файл , като презаписва предишното си съдържание.
>& име на файл
Както стандартният изход от последната команда, така и стандартната грешка от всички команди се пренасочват към имената на файла име на файл , като презаписва предишното си съдържание.
>> име на файл
Стандартният изход от последната команда се пренасочва към името на файла име на файл , добавяйки към нея, вместо да я презаписва.
2>> име на файл
Стандартната грешка от всички команди в тръбопровода се пренасочва към името на файла име на файл , добавяйки към нея, вместо да я презаписва.
>>& име на файл
Както стандартният изход от последната команда, така и стандартната грешка от всички команди се пренасочват към имената на файла име на файл , добавяйки към нея, вместо да я презаписва.
>@ fileId
FileId трябва да бъде идентификатор за отворен файл, като например стойността за връщане от предишно повикване доотворен, Стандартният изход от последната команда се пренасочва към fileId който трябва да е отворен за писане.
2>@ fileId
FileId трябва да бъде идентификатор за отворен файл, като например стойността за връщане от предишно повикване доотворен, Стандартната грешка от всички команди в тръбопровода се пренасочва към fileId на файла. Файлът трябва да е отворен за писане.
>&@ fileId
FileId трябва да бъде идентификатор за отворен файл, като например стойността за връщане от предишно повикване доотворен, Както стандартният изход от последната команда, така и стандартната грешка от всички команди се пренасочват към fileId на файла. Файлът трябва да е отворен за писане.
Ако стандартният изход не е бил пренасочен, тогаваEXEC команда връща стандартния изход от последната команда в тръбопровода. Ако някоя от командите в тръбопровода излезе необичайно или е убита или спряна, тогаваEXEC ще върне грешка и съобщението за грешка ще включва продукцията на тръбопровода, последвана от съобщения за грешка, описващи необичайни прекъсвания; накод на грешка променливата ще съдържа допълнителна информация за последното ненормално терминиране. Ако някоя от командите пише в стандартния си файл за грешка и тази стандартна грешка не е пренасочена, тогаваEXEC ще върне грешка; съобщението за грешка ще включва стандартния изход на тръбопровода, последван от съобщения за ненормални термини (ако има такива), последвани от стандартния изход за грешка.
Ако последният знак на резултата или съобщението за грешка е нов ред, този знак обикновено се изтрива от резултата или съобщението за грешка. Това е в съответствие с други стойности за връщане в Tcl, които обикновено не завършват с нови редове. Въпреки това, ако-keepnewline е посочено след това следващият нов ред е запазен.
Ако стандартният вход не е пренасочен с `` '' или `` '' или `` <@ ', тогава стандартният вход за първата команда в тръбопровода се взема от текущия стандартен вход на приложението.
Ако последният арг е `` & '', тогава тръбопроводът ще бъде изпълнен във фонов режим. В този случайEXECкоманда ще върне списък, чиито елементи са идентификаторите на процеса за всички подпроцеси в тръбопровода.Стандартният изход от последната команда в тръбопровода ще отиде до стандартния изход на приложението, ако не е пренасочен, а изходът за грешка от всички команди в тръбопровода ще отиде до стандартния файл за грешка на приложението, освен ако не бъде пренасочен.
Първата дума във всяка команда се приема като команда; tilde-substitution се изпълнява върху него и ако резултатът не съдържа наклонена черта, директорите в променливата на PATH среда се търсят за изпълним файл с дадено име. Ако името съдържа наклонена черта, то трябва да се отнася до изпълнимия файл, достижим от текущата директория. В аргументите за команди не се изпълняват разширения на "глобус" или други замествания като shell.
Проблеми с преносимостта
Windows (всички версии)
Четене от или записване в гнездо, използвайки ``@ fileId '' нотация, не работи. Когато четете от сокет, 16-битово приложение за DOS ще виси и 32-битово приложение ще се върне веднага с края на файла. Когато някой от типовете приложения пише в гнездо, информацията се изпраща в конзолата, ако има такъв или се изхвърли.
Приспособлението за текстова конзола Tk не осигурява истински стандартни IO възможности. При Tk, при пренасочване от стандартния вход, всички приложения ще виждат незабавен край на файла; информацията, пренасочена към стандартен изход или стандартна грешка, ще бъде отхвърлена.
Прекъсванията напред или назад се приемат като сепаратори на пътя за аргументи на Tcl команди. Когато изпълнявате приложение, името на пътя, посочено за приложението, може да съдържа и пресечници назад или назад като сепаратори на път. Имайте обаче предвид, че повечето приложения на Windows приемат аргументи с преден наклон само като ограничители на опциите и обратно наклон само в пътища. Всички аргументи за приложение, които указват име на път с пресечени наклонени черти, няма да се конвертират автоматично, за да се използва знакът за наклонена черта. Ако аргументът съдържа плъзгачи за напред като сепаратор на път, той може или не може да бъде разпознат като име на път, в зависимост от програмата.
Освен това, когато се обаждате на 16-битово приложение за DOS или Windows 3.X, всички имена на пътеки трябва да използват краткия, криптиращ формат на пътя (например, използвайки "applba ~ 1.def" вместо "applbakery.default" ).
Две или повече преки или задни наклони подред в един път се отнасят до мрежов път. Например, просто обединяване на основната директория° С:/ с поддиректория/ Прозорци / система ще добиеC: // прозорци / система (две сгъвки заедно), което се отнася до точката, която се наричасистема на машината, нареченапрозорци (и° С:/ се игнорира) и не е еквивалентно наC: / Windows / система, който описва директория на текущия компютър. Най-файл се присъедини командата трябва да се използва за свързване на компонентите на пътя.
Windows NT
При опит за изпълнение на приложение,EXEC първо търси името, както е посочено. След това,.com, .exe, и.bat се добавят към края на посоченото име и търсят по-дългото име. Ако името на директорията не е посочено като част от името на приложението, следните директории се търсят автоматично, когато се опитвате да намерите приложението:
Директорията, от която е заредена изпълнимата програма Tcl.Текущата директория.Windows NT 32-битовата системна директория.16-битовата системна директория на Windows NT.Началната директория на Windows NT.Директорите, изброени в пътя. За да изпълни команди вградени в Shell катореж икопие, повикващият трябва да предложи "cmd.exe / с'' на желаната команда. Windows 95 При опит за изпълнение на приложение,EXEC първо търси името, както е посочено. След това,.com, .exe, и.bat се добавят към края на посоченото име и търсят по-дългото име. Ако името на директорията не е посочено като част от името на приложението, следните директории се търсят автоматично, когато се опитвате да намерите приложението: Директорията, от която е заредена изпълнимата програма Tcl.Текущата директория.Системната директория на Windows 95.Началната директория на Windows 95.Директорите, изброени в пътя. За да изпълни команди вградени в Shell катореж икопие, повикващият трябва да предложи "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 или дори да се окачат на системата, ако не им е предоставен прозорец на частна конзола. шлифер Най-EXEC командата не се изпълнява и не съществува под Macintosh. Unix Най-EXEC командата е напълно функционална и работи както е описано. грешка (n), отворена (n) изпълнение, тръбопровод, пренасочване, подпроцес Важно: Използвай мъж команда ( % man ), за да видите как се използва команда на вашия компютър. Вижте също
Ключови думи




