Exec - Linux Command - Unix команадсы

exec - субпроцессті шақыру (es)

Синопсис

exec ? ажыратқыштар ? arg ? arg ... ?

Сипаттама

Бұл команда өз дәлелдерін орындау үшін бір немесе бірнеше субпроцесстердің сипаттамасы ретінде қарастырады. Аргументтер стандартты қабық құбырының формасын алады, мұнда әрбір arg әр команданың бір сөзі болады және әрбір нақты команда қосалқы процесс болады.

Егер exec үшін бастапқы дәлелдер басталса - онда олар командалық-коммутациялық қосқыштар ретінде қарастырылады және құбырдың техникалық сипаттамасының бөлігі болмайды. Келесі қосқыштар қазіргі уақытта қолдау көрсетіледі:

-қоңырауғақұжат

Газ құбырының шығуындағы жаңа сызықты сақтайды. Әдетте жаңа сызық жойылады.

-

Ауыстырғыштардың соңын белгілейді. Осыдан кейінгі аргумент, егер ол а - дан басталса да, алғашқы арс ретінде қарастырылады.

Егер arg (немесе жұптың буыны) төменде сипатталған формалардың бірі болса, онда subprocess (es) арасында кіріс пен шығыс ағынын басқару үшін exec пайдаланылады. Мұндай дәлелдер субпроцесске (es) берілмейді. Файлдар сияқты `` < fileName '' форматында `` `` `` <'' немесе бөлек аргументінде бөлек аргумент болуы мүмкін немесе сол интервалда араласпайтын бос орын жоқ (яғни `` < fileName '').

|

Құбырдағы нақты командаларды ажыратады. Алдыңғы пәрменнің стандартты шығысы келесі пәрменнің стандартты енгізіліміне жіберіледі.

| |

Құбырдағы нақты командаларды ажыратады. Алдыңғы пәрменнің стандартты шығысы мен стандартты қателігі келесі пәрменнің стандартты кірісіне тасымалданады. Бұл қайта бағыттау формасы 2>,> &.

< fileName

FileName атымен файл ашылады және құбырдағы бірінші команда үшін стандартты енгізу ретінде пайдаланылады.

<@ fileId

FileId ашық файл үшін идентификатор болуы керек, мысалы, бұрынғы қоңыраудан қайтарылатын мән ашылады . Ол құбырдағы бірінші команда үшін стандартты кіріс ретінде пайдаланылады. FileId оқу үшін ашылған болуы керек.

<< мәні

Мән бірінші пәрменге стандартты енгізу ретінде беріледі.

> fileName

Соңғы пәрменнен стандартты шығыс fileName файлына қайта бағытталады, оның алдыңғы мазмұнын қайта жазады .

2> fileName

Құбырдағы барлық пәрмендердің стандартты қателігі файлдың атауын өзгертіп , алдыңғы мазмұнды қайта жазады .

> & fileName

Соңғы пәрменнен стандартты шығыс ретінде де, барлық пәрмендерден стандартты қате файлаAdmin файлына қайта бағытталады, оның алдыңғы мазмұнын қайта жазады .

>> fileName

Соңғы команданың стандартты шығысы файлдың атауын өзгертуге емес, оған қосымша файлға қайта бағытталады.

2 >> fileName

Құбырдағы барлық пәрмендердің стандартты қателігі файлдың атауына жатқызылған, оны қайта жазуға емес, оған қосылады.

>> & fileName

Соңғы пәрменнен стандартты шығыс ретінде де, барлық пәрмендерден стандартты қате файлаAdmin файлына қайта бағытталады, оны қайта жазуға емес, оған қосылады.

> @ fileId

FileId ашық файл үшін идентификатор болуы керек, мысалы, бұрынғы қоңыраудан қайтарылатын мән ашылады . Соңғы пәрменнен стандартты шығыс fileId файлына қайта бағытталады, ол жазу үшін ашық болуы керек.

2> @ fileId

FileId ашық файл үшін идентификатор болуы керек, мысалы, бұрынғы қоңыраудан қайтарылатын мән ашылады . Құбырдағы барлық пәрмендерден стандартты қате fileId файлына қайта бағытталады. Файл жазу үшін ашылған болуы керек.

> & @ fileId

FileId ашық файл үшін идентификатор болуы керек, мысалы, бұрынғы қоңыраудан қайтарылатын мән ашылады . Соңғы пәрменнен стандартты шығыс ретінде де, барлық пәрмендерден стандартты қате файлId файлына қайта бағытталады. Файл жазу үшін ашылған болуы керек.

Егер стандартты шығыс қайта бағытталмаса, exec командасы құбырдағы соңғы пәрменнен стандартты шығысын береді. Егер құбырдағы командалардың біреуі қалыпты түрде шықса немесе өлтірілсе немесе тоқтатылса, exec қатені қайтарады және қате туралы хабар құбырдың шығысын қамтиды, одан кейін қалыпты тоқтатуларды сипаттайтын қате хабарламалары болады; errorCode айнымалысы соңғы кездегі анормальды тоқтату туралы қосымша ақпаратты қамтиды. Егер командалардың бірі стандартты қате файлына жазса және стандартты қате қайта бағытталмаса, exec қатені қайтарады; қате туралы хабарламада құбырдың стандартты шығуы, одан кейін қалыпты өшірулер туралы хабарлар (егер бар болса), содан кейін стандартты қателік шығуы қамтылады.

Нәтиже немесе қате туралы хабардың соңғы таңбасы жаңа сызық болса, онда бұл таңба әдетте нәтиже немесе қате туралы хабардан жойылады. Бұл әдетте жаңа сызықтармен аяқталмаған басқа Tcl қайтару мәндеріне сәйкес келеді. Алайда, егер -keepnewline көрсетілсе, онда жаңа сызық сақталады.

Егер стандартты кіріс «` <'' немесе `` << '' немесе`` <@ '' жолымен қайта бағытталмаса, онда құбырдағы бірінші команда үшін стандартты енгізу қолданбадағы қолданыстағы стандартты енгізуден алынады.

Егер соңғы арна «&» болса, онда құбырды фондық режимде орындауға болады. Бұл жағдайда exec командасы элементтері құбырдағы барлық субпроцесстер үшін процестің идентификаторлары болып табылатын тізімді қайтарады. Құбырдағы соңғы команданың стандартты шығысы, егер ол қайта бағытталмаған болса, бағдарламаның стандартты шығарылымына түседі және құбырдағы барлық пәрмендерден қате шығуы қайта бағытталмаса, бағдарламаның стандартты қате файлына өтеді.

Әр командадағы бірінші сөз командалық атау ретінде қабылданады; онда тильда-алмастыру орындалады, ал егер нәтиже жоқ болса, PATH ортасының айнымалыларындағы анықтамалар осы атаумен орындалатын файлды іздейді. Егер атау қиғаш болса, онда ол ағымдағы каталогтан қол жетімді орындалатын файлға сілтеме жасауы керек. Командаларға дәлелдерде «glob» кеңейтімі немесе басқа қабықшаларға ұқсас ауыстырулар орындалмайды.

Тасымалдау мәселелері

Windows (барлық нұсқалар)

Розеткадан оқып немесе жазу'` @ fileId ' жазуы арқылы жұмыс істемейді. Розеткадан оқып жатқанда, 16-биттік DOS қолданбасы ілінеді және 32 биттік бағдарлама файлдың соңымен дереу оралады. Қосымшаның кез келген түрі розеткаға жазылған кезде, ақпараттың орнына консольге жіберіледі, егер ол бар болса немесе жойылса.

Tk консоль мәтінінің виджеті нақты IO мүмкіндіктерін қамтамасыз етпейді. Tk астында, стандартты енгізуден қайта бағыттау кезінде, барлық қосымшалар дереу аяқталатын файлды көреді; стандартты шығысқа немесе стандартты қатеге қайта бағытталатын ақпарат алынып тасталады.

Алдын ала немесе артқа бағытталған сызықтар Tcl пәрмендеріне дәлелдер үшін жол ажыратқыштары ретінде қабылданады. Бағдарламаны орындаған кезде, бағдарлама үшін көрсетілген жолдың атауы жолдың бөлгіштері ретінде алға немесе артқа қиғаш сызықтарды қамтуы мүмкін. Дегенмен, көптеген Windows бағдарламалары аргументтерді тек қана жолдарда тек қана опцияларды шектегіштер мен кері қиғаш сызықтар ретінде алға қарай бұрады. Жолдың атауын алдыңғы слайдтармен анықтайтын бағдарламаға арналған аргументтер автоматты түрде кері қиғаш сызықты қолдануға түрленбейді. Егер аргумент жол сепараторы ретінде алға қарай кесілген болса, ол бағдарламаға байланысты жол атауы ретінде танылуы мүмкін немесе болмауы мүмкін.

Сонымен қатар, 16-биттік DOS немесе Windows 3.X бағдарламасына қоңырау шалу кезінде барлық жол атаулары қысқа, криптиялық, жол пішімін (мысалы, `applbakery.default 'орнына` `applba ~ 1.def' ).

Жолдағы жолдағы екі немесе одан да көп алға немесе артқа сызықтар желі жолына қатысты. Мысалы, c: / subdirectory / windows / system жүйесімен түбірлік директорияның қарапайым байланыстары c: // windows / system (екі қиылыстарды бірге) береді, бұл терезе деп аталатын құрылғыдағы жүйе деп аталатын нүкте c: / еленбейді) және ағымдағы компьютердегі каталогты сипаттайтын c: / windows / system- ге тең емес. Файл біріктіру пәрменін жол құрамдастарын біріктіру үшін пайдалану керек.

Windows NT

Қолданбаны орындауға әрекет жасаған кезде, атауды бірінші рет іздеуге болады. Содан кейін, .com , .exe және .bat үшін көрсетілген аттың соңына қосылады және ол ұзақ атауды іздейді. Егер каталог атауы қолданбаның атауының бөлігі ретінде көрсетілмесе, бағдарламаны табу әрекеті кезінде келесі каталогтар автоматты түрде ізделеді:

Tcl жүктемесі жүктелген каталог.
Ағымдағы каталог.
Windows NT 32 биттік жүйелік каталог.
Windows NT 16 биттік жүйелік каталог.
Windows NT үй каталогы.
Жолда көрсетілген каталогтар.

Қабықшаны дир және көшірме сияқты салынған пәрмендерді орындау үшін қоңырау шалушы қажетті командамен `` cmd.exe / c 'дегенді тапсыруы керек.

Windows 95

Қолданбаны орындауға әрекет жасаған кезде, атауды бірінші рет іздеуге болады. Содан кейін, .com , .exe және .bat үшін көрсетілген аттың соңына қосылады және ол ұзақ атауды іздейді. Егер каталог атауы қолданбаның атауының бөлігі ретінде көрсетілмесе, бағдарламаны табу әрекеті кезінде келесі каталогтар автоматты түрде ізделеді:

Tcl жүктемесі жүктелген каталог.
Ағымдағы каталог.
Windows 95 жүйелік каталогы.
Windows 95 үй каталогы.
Жолда көрсетілген каталогтар.

Қабырға командаларын, мысалы dir және көшірмені орындау үшін, қоңырау шалушы « 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 қабығын құбырлардың өзі қалай өңдейді.

Командалық команданың кейбір қосымшалары интерактивті түрде орындалмауы керек. Стандартты енгізуден және стандартты түрде жазудан гөрі консольдық терезеге тікелей қол жеткізетін бағдарламалар сәтсіз аяқталуы мүмкін, Tcl-ні адастырады немесе тіпті өздерінің жеке консольдық терезесі оларға қол жетімді болмаса, жүйені бекітіңіз.

Macintosh

Exec пәрмені орындалмайды және Macintosh астында жоқ.

Unix

Exec командасы толық функционалды және сипатталғандай жұмыс істейді.

Сондай-ақ, қараңыз

қате (n), ашық (n)

Кілт сөздер

орындау, құбыр, қайта бағыттау, субпроцесс

Маңызды: Жеке компьютерде пәрменді қалай пайдалану керектігін көру үшін man ( % man ) пәрменін пайдаланыңыз.