SORU
21 AĞUSTOS 2013, ÇARŞAMBA


Kabuk betiklerini exec komutu kullanımı nelerdir?

Herkes bunu basit bir örnekle kabuk betik exec komutu kullanır ne olduğunu açıklayabilir mi?

CEVAP
21 AĞUSTOS 2013, ÇARŞAMBA


exec dahili komut çekirdek fonksiyonları aynalar, genellikle C olarak adlandırılan bir execve dayalı bir aile vardır

exec forking yeni bir süreç olmadan geçerli sürecindeki mevcut programı değiştirir. Yazdığınız her komut, bir şey değil, ama bazı durumlarda çok işe yarıyor. Burada kullanılan bazı senaryolar;

  1. Kullanıcı kabuk erişimi olmayan belirli bir uygulama programı çalıştırmak istiyoruz. Oturum programı /etc/passwd değiştirebiliriz, ama belki ortam-başlangıç dosyaları alınmasını istiyoruz. Yani (diyelim ki) .profile geçen deyim gibi bir şey diyor:

     exec appln-program
    

    şimdi geri dönmek için kabuk yoktur. Eğer öyleyse appln-program çökerse bile, kullanıcı bitemez - exec orada yerini değil, çünkü bir kabuk.

  2. /Etc/farklı bir kabuk passwd kullanmak istiyoruz. Aptalca gelebilir, ama bazı sitelerde kullanıcılar giriş onların kabuk değiştirmek için izin vermez. Herkes csh ve herkes sadece başlangıç olduğunu biliyorum bir site .login start-up dosyası csh () onların çağrısı 14 ** koyun. O çalışırken, csh başıboş bir süreç çalışan sol, ve çıkış kafa karıştırıcı olabilecek iki sahne oldu. Yani biz değişti exec ksh sadece yerine c kabuk programı korn kabuk, ve yapılan her şey daha basit (başka konularda bu gibi aslında o kadar ksh bir giriş kabuğu).

  3. İşlemler kaydetmek için sadece. prog1 -> prog2 -> prog3 -> prog4 vb çağırıyoruz. ve bir daha da geri gidiyor, sonra her çağrı bir exec olun. Kaynaklar (fazla söylenecek bir şey değil. kaydeder ve kapatma simplier yapar sürece mükerrer).

Belli ki exec yere kullanılan gördünüz, belki de Eğer seni rahatsız eden kod göstersen kullanımı haklı olabiliriz.

Edit: Cevabım yukarıda eksik olduğunu fark ettim. Vardırikiksh bash - dosya tanıtıcı açmak için kullanılan gibi kabukları exec kullanır. İşte bazı örnekler:

exec 3< thisfile          # open "thisfile" for reading on file descriptor 3
exec 4> thatfile          # open "thatfile" for writing on file descriptor 4
exec 8<> tother           # open "tother" for reading and writing on fd 8
exec 6>> other            # open "other" for appending on file descriptor 6
exec 5<&0                 # copy read file descriptor 0 onto file descriptor 5
exec 7>&4                 # copy write file descriptor 4 onto 7
exec 3<&-                 # close the read file descriptor 3
exec 6>&-                 # close the write file descriptor 6

Aralığı çok önemli olduğunu unutmayın. Eğer fd numarasını ve yeniden yönlendirme sembol arasında bir boşluk sonra koyarsanız exec asıl anlamı geri döner:

  exec 3 < thisfile       # oops, overwrite the current program with command "3"

Örneğin ksh kullanın read -u bash print -u, bu kullanabilirsiniz birkaç yolu vardır:

read <&3
echo stuff >&4

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • amc

    amc

    21 EYLÜL 2005
  • André Frizzo

    André Frizz

    16 Aralık 2006