Bazı durumlarda işlem değişikliği beklendiği gibi çalışmayacaktır. İşte bir örnek:
Giriş:
gcc <(echo 'int main(){return 0;}')
Çıktı:
/dev/fd/63: file not recognized: Illegal seek
collect2: error: ld returned 1 exit status
Giriş:
Ancak farklı bir komutla kullanıldığında beklendiği gibi çalışır:
grep main <(echo 'int main(){return 0;}')
Çıktı:
int main(){return 0;}
Diğer komutlarda da benzer hatalar olduğunu fark ettim (örn. Dosyayı işlem değişikliğinden bekleten komut kullanılamaz /dev/fd/63
veya benzeri değil ). İle bu başarısızlık gcc
sadece en son. Süreç ikame işleminin bu şekilde ne zaman başarısız olacağını ve kullanılmaması gerektiğini belirlemek için bilmem gereken bazı genel kurallar var mı?
Bu BASH sürümünü Ubuntu 12.04'te kullanıyorum (bunu arch ve debian'da da gördüm):
GNU bash, sürüm 4.3.11 (1) -turease (i686-pc-linux-gnu)
gcc -xc <(echo 'int main(){return 0;}')
(dili C
açıkça ayarlar ).
illegal seek
cevap gibi görünüyor -|pipe
obash
kadar yürütülen programa işaret eden bir aranabilir dosyası değil. muhtemelenecho data | command /dev/fd/0
bir programda başarılı olamıyorsanız , w / 'da benzer bir şansınız olur<(cmd)
. Diskte bir dosya sağlamaz - sadece bir boru dosyası tanımlayıcısına işaret eden bir argüman yerine geçer.