2010-03-23 16 views
6

Aşağıdaki kod çıkışları aramak neden olur ./a.out". Sorun elbette ftell ile. Sorum şu: neden bu oluyor? Stdin'in aranabilir olduğunu düşünürdüm. fseek de aynı hatayı neden olur. Eğer stdin aranamazsa, aynı şeyi yapabileceğimin bir yolu var mı?ftell (stdin) yasadışı "Yasadışı aramak" hatayı

Yanıtlarınız için teşekkür ederiz.

+1

Aslında fseek ile çözmeye çalıştığınız sorun nedir? "Cat file |./A.out" ve "./a.out

cevap

12

Fifos aranamaz. Onlar sadece bir tampon. Bir fifo tampondan read() veri alındıktan sonra, asla alınamaz. programınızı ran eğer

Not:

./a.out < script 

sonra standart girdi bir dosya ve olurdu değil Fifo, böylece ftell() sonra beklediğiniz yapacağız.

+2

+1. –

+0

@R .. Fark nedir? – Calmarius

+0

@Calmarius: cat f | x, bir dosyayı bir fifo'ya kopyalamak için ayrı bir işlem (ve belki ayrı bir işlemci) kullanır. fifo, x süreci tarafından okunmaktadır. x, read() 'dan başka şeyler yaparsa, bu dosyanın kendisini okuduğundan daha hızlı olabilir. x geocar

İlgili konular