Exec - Linux Komutu - Unix Komutu

exec - Alt süreçleri çağır

özet

exec ? anahtarlar ? arg ? arg ...

Açıklama

Bu komut argümanlarını yürütmek için bir veya daha fazla alt işlemin belirtimi olarak ele alır. Argümanlar, her bir argümanın bir komutun bir kelimesi haline geldiği ve her bir ayrı komutun bir alt süreç haline geldiği standart bir kabuk boru hattı şeklini alır.

Çalıştırılacak ilk argümanlar - ile başlıyorsa, bunlar komut satırı anahtarları olarak ele alınırlar ve boru hattı spesifikasyonunun bir parçası değildirler. Şu anahtarlar şu anda desteklenmektedir:

-keepnewline

Boru hattının çıkışında takip eden bir yeni satır tutar. Normalde sondaki yeni satır silinir.

-

Anahtarların sonunu işaretler. Bunu izleyen argüman, a - ile başlasa bile ilk argüman olarak ele alınacaktır.

Eğer bir arg (veya arg çifti) aşağıda açıklanan formlardan birine sahipse, o zaman altprocess (ler) arasında giriş ve çıkış akışını kontrol etmek için exec tarafından kullanılır. Bu tür argümanlar alt süreçlere (ler) aktarılmayacaktır. `` < FileName '' fileName gibi formlarda, '<' 'ya da araya girmeyen alan (yani `` < dosyaAdı ' ') ile aynı argümandan ayrı bir argüman olabilir.

|

Boru hattındaki farklı komutları ayırır. Önceki komutun standart çıktısı, bir sonraki komutun standart girdisine aktarılacaktır.

| &

Boru hattındaki farklı komutları ayırır. Her iki standart çıktı ve önceki komutun standart hatası, bir sonraki komutun standart girdisine aktarılacaktır. Bu yeniden yönlendirme şekli, 2> ve> & gibi formları geçersiz kılar.

< dosyaAdı

FileName adlı dosya açılır ve boru hattındaki ilk komut için standart giriş olarak kullanılır.

<@ fileId

FileId , bir önceki çağrının açılacağı dönüş değeri gibi açık bir dosya için tanımlayıcı olmalıdır. Boru hattındaki ilk komut için standart giriş olarak kullanılır. Okumak için FileId açılmış olmalıdır.

<< değeri

Değer , standart girdisi olarak ilk komuttan geçirilir.

> dosya adı

Son komuttan standart çıktı, önceki içeriğinin üzerine yazarak, fileName adlı dosyaya yeniden yönlendirilir.

2> dosyaAdı

Boru hattındaki tüm komutlardan gelen standart hata, önceki içeriğinin üzerine yazarak dosyaAdı adlı dosyaya yeniden yönlendirilir.

> & dosyaAdı

Hem son komuttan standart çıktı hem de tüm komutlardan gelen standart hata, önceki içeriğinin üzerine yazarak, fileName adlı dosyaya yeniden yönlendirilir.

>> dosya adı

Son komuttan standart çıktı, üzerine yazmak yerine dosya adına eklenen dosyaAdı olarak yeniden yönlendirilir.

2 >> dosyaAdı

Boru hattındaki tüm komutlardan gelen standart hata, üzerine yazmak yerine dosya adına eklenen dosyaAdı adlı dosyaya yeniden yönlendirilir.

>> & dosyaAdı

Son komuttan standart çıktı ve tüm komutlardan gelen standart hata, üzerine yazmak yerine dosya adına eklenen dosyaAdı olarak yeniden yönlendirilir.

> @ fileId

FileId , bir önceki çağrının açılacağı dönüş değeri gibi açık bir dosya için tanımlayıcı olmalıdır. Son komuttan standart çıktı, yazılmak üzere açılmış olması gereken fileId dosyasına yönlendirilir.

2> @ fileId

FileId , bir önceki çağrının açılacağı dönüş değeri gibi açık bir dosya için tanımlayıcı olmalıdır. Boru hattındaki tüm komutlardan gelen standart hata, fileId dosyasının dosyasına yönlendirilir. Dosya yazılmak üzere açılmış olmalı.

> & @ fileId

FileId , bir önceki çağrının açılacağı dönüş değeri gibi açık bir dosya için tanımlayıcı olmalıdır. Hem son komuttan standart çıktı hem de tüm komutlardan gelen standart hata, fileId dosyasına yeniden yönlendirilir. Dosya yazılmak üzere açılmış olmalı.

Standart çıktı yönlendirilmediyse, exec komutu, standart çıktıyı boru hattındaki son komuttan döndürür. Boru hattındaki komutlardan herhangi birinin anormal olarak çıkması veya öldürülmesi veya askıya alınması durumunda, exec bir hata döndürecek ve hata mesajı boru hattının çıktısını ve ardından anormal sonlandırmaları açıklayan hata mesajlarını içerecektir; errorCode değişkeni, karşılaşılan son anormal sonlandırma hakkında ek bilgi içerecektir. Komutlardan herhangi biri standart hata dosyasına yazarsa ve standart hata yönlendirilmezse, exec bir hata döndürür; hata mesajı, boru hattının standart çıktısını, ardından anormal sonlandırmalarla ilgili mesajlar (varsa) ve ardından standart hata çıktısını içerir.

Sonuç veya hata mesajının son karakteri bir satırsonu ise, o karakter normal olarak sonuç veya hata mesajından silinir. Bu, normalde yeni satırlarla bitmeyen diğer Tcl dönüş değerleri ile tutarlıdır. Ancak, -keepnewline belirtilirse, sondaki satır tutulur.

Eğer standart giriş `` <'' veya `` << '' veya `` <@ '' ile yönlendirilmezse, boru hattındaki ilk komut için standart girdi, uygulamanın mevcut standart girişinden alınır.

Son argüman `` & '' ise, boru hattı arka planda yürütülür. Bu durumda exec komutu, elemanları boru hattındaki tüm alt işlemlerin süreç tanımlayıcıları olan bir listeyi döndürecektir. Boru hattındaki son komuttan gelen standart çıktı, yönlendirilmediyse uygulamanın standart çıktısına gidecektir ve yeniden yönlendirilmediği sürece, boru hattındaki tüm komutlardan gelen hata çıktısı uygulamanın standart hata dosyasına gider.

Her komuttaki ilk sözcük, komut adı olarak alınır; tilde-substitution üzerinde gerçekleştirilir ve sonuç eğik çizgi içermiyorsa, PATH ortam değişkenindeki dizinler, belirtilen isimle bir yürütülebilir dosya için aranır. Ad bir eğik çizgi içeriyorsa, geçerli dizinden erişilebilen bir yürütülebilir dosyaya başvurmalıdır. Komutlara yönelik argümanlarda `glob '' genişlemesi veya diğer kabuk benzeri yer değiştirmeler yapılmaz.

Taşınabilirlik Sorunları

Windows (tüm sürümler)

`` FileId '' göstergesini kullanarak bir soketten okuma ya da bir yuvaya yazma işlemi çalışmaz. Bir soketten okurken, bir 16-bit DOS uygulaması asılacak ve 32 bitlik bir uygulama hemen dosya sonu ile geri dönecektir. Her iki uygulama türü de bir sokete yazdığında, bilgi mevcutsa ya da atılırsa konsola gönderilir.

Tk konsolu metin gereci, gerçek standart IO yetenekleri sağlamaz. Tk altında, standart girdiden yönlendirirken, tüm uygulamalar hemen bir dosya sonu görür; standart çıkışa veya standart hataya yönlendirilen bilgiler atılacaktır.

İleri veya geri eğik çizgiler, Tcl komutlarına argümanlar için yol ayırıcıları olarak kabul edilir. Bir uygulamayı yürütürken, uygulama için belirtilen yol adı, yol ayırıcıları olarak ileri veya geri eğik çizgi içerebilir. Bununla birlikte, çoğu Windows uygulamasının eğik çizgileri yalnızca eğim çizgileriyle ve yalnızca yollarda ters eğik çizgilerle argümanları kabul ettiğini unutmayın. Eğik çizgileri olan bir yol adı belirten bir uygulamaya yapılan tüm argümanlar otomatik olarak ters eğik çizgi karakterini kullanmaya dönüştürülmez. Bir argüman, yol ayırıcı olarak eğik çizgi içeriyorsa, programa bağlı olarak bir yol adı olarak algılanabilir veya olmayabilir.

Ayrıca, 16 bitlik bir DOS veya Windows 3.X uygulaması çağrıldığında, tüm yol adları kısa, şifreli, yol biçimini kullanmalıdır (ör. "Applbakery.default" yerine "applba ~ 1.def" yi kullanarak) ).

Bir yoldaki bir satırdaki iki veya daha fazla ileri veya geri eğik çizgi bir ağ yoluna başvurur. Örneğin, kök dizinin c: / alt dizini / pencereleri / sistemiyle basit bir şekilde birleştirilmesi, c: // windows / system (birlikte iki eğik çizgi) verir; c: / / yoksayılır) ve geçerli bilgisayarda bir dizini açıklayan c: / windows / system ile eşdeğer değildir. Yol bileşenleri birleştirmek için dosya birleştirme komutu kullanılmalıdır.

Windows NT

Bir uygulamayı yürütmeye çalışırken, exec ilk önce belirtildiği gibi adını arar. Sonra, sırayla, .com , .exe ve .bat belirtilen adın sonuna eklenir ve daha uzun bir isim arar. Uygulama adının bir parçası olarak bir dizin adı belirtilmemişse, uygulamayı bulmaya çalışırken aşağıdaki dizinler otomatik olarak aranır:

Tcl yürütülebilir dosyasının yüklendiği dizin.
Geçerli dizin.
Windows NT 32 bit sistem dizini.
Windows NT 16 bit sistem dizini.
Windows NT giriş dizini.
Yolda listelenen dizinler.

Direk ve kopya gibi kabuk yerleşik komutlarını çalıştırmak için arayanın istenen komutla `` cmd.exe / c '' yazması gerekir.

Windows 95

Bir uygulamayı yürütmeye çalışırken, exec ilk önce belirtildiği gibi adını arar. Sonra, sırayla, .com , .exe ve .bat belirtilen adın sonuna eklenir ve daha uzun bir isim arar. Uygulama adının bir parçası olarak bir dizin adı belirtilmemişse, uygulamayı bulmaya çalışırken aşağıdaki dizinler otomatik olarak aranır:

Tcl yürütülebilir dosyasının yüklendiği dizin.
Geçerli dizin.
Windows 95 sistem dizini.
Windows 95 giriş dizini.
Yolda listelenen dizinler.

Direk ve kopya gibi kabuk yerleşik komutlarını yürütmek için, arayan kişi istenen komuta `` komut.com / c '' yazmalıdır .

Bir kez 16-bit DOS uygulaması bir konsoldan standart giriş okuduktan sonra çıkın, sonradan tüm 16-bit DOS uygulamalarını çalıştırdığınızda, standart giriş zaten kapalı olarak görecektir. 32-bit uygulamalar bu soruna sahip değildir ve düzgün çalışacaktır, 16 bitlik bir DOS uygulamasından sonra bile standart girişin kapalı olduğunu düşünür. Bu hata için şu anda bilinen bir geçici çözüm bulunmamaktadır.

NUL: cihaz ve bir 16 bit uygulama arasında yönlendirme her zaman çalışmaz. NUL'den yönlendirirken : bazı uygulamalar askıda kalabilir, diğerleri sonsuz bir "0x01" bayt akışına sahip olur ve bazıları hemen bir dosya sonu doğru bir şekilde alır; Davranış, uygulamanın kendisinde derlenmiş bir şeye bağlı gibi görünmektedir. 4K'dan daha büyük veya NUL olarak yönlendirilirken, bazı uygulamalar askıya alınır. Yukarıdaki sorunlar 32 bit uygulamalarda gerçekleşmez.

Tüm DOS 16 bit uygulamaları eşzamanlı olarak çalışır. Bir borudan 16 bit DOS uygulamasına tüm standart girdiler geçici bir dosyada toplanır; 16 bitlik DOS uygulaması çalışmaya başlamadan önce borunun diğer ucu kapatılmalıdır. Bir 16 bit DOS uygulamasından tüm standart çıktı veya hata bir boruya geçici dosyalar halinde toplanır; geçici dosyalar boru hattının bir sonraki aşamasına yönlendirilmeden önce uygulama sonlandırılmalıdır. Bunun nedeni, bir Windows 95'in borunun uygulanmasındaki bir hatadır ve standart Windows 95 DOS kabuğunun boruları nasıl işlediğidir.

Command.com gibi bazı uygulamalar etkileşimli olarak yürütülmemelidir. Standart girdilerinden okuma ve standart çıkışlarına yazma yerine konsol penceresine doğrudan erişen uygulamalar başarısız olabilir, Tcl'yi asabilir veya kendi özel konsol penceresi mevcut değilse sistemi asabilirler.

yağmurluk

Exec komutu uygulanmadı ve Macintosh altında mevcut değil.

Unix

Exec komutu tamamen işlevseldir ve açıklandığı gibi çalışır.

Ayrıca bakınız

hata (n), açık (n)

Anahtar kelimeler

yürütme, boru hattı, yönlendirme, alt işlem

Önemli: Komutunuzun belirli bir bilgisayarda nasıl kullanıldığını görmek için man komutunu ( % adam ) kullanın.