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/63veya benzeri değil ). İle bu başarısızlık gccsadece 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 Caçıkça ayarlar ).
illegal seekcevap gibi görünüyor -|pipeobashkadar yürütülen programa işaret eden bir aranabilir dosyası değil. muhtemelenecho data | command /dev/fd/0bir 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.