উপলক্ষে প্রক্রিয়া প্রতিস্থাপন প্রত্যাশার মতো কাজ করবে না। এখানে একটি উদাহরণ:
ইনপুট:
gcc <(echo 'int main(){return 0;}')
আউটপুট:
/dev/fd/63: file not recognized: Illegal seek
collect2: error: ld returned 1 exit status
ইনপুট:
তবে এটি ভিন্ন কমান্ডের সাহায্যে প্রত্যাশার মতো কাজ করে:
grep main <(echo 'int main(){return 0;}')
আউটপুট:
int main(){return 0;}
আমি অন্যান্য কমান্ডের সাথে অনুরূপ ব্যর্থতা লক্ষ্য করেছি (যেমন প্রক্রিয়া প্রতিস্থাপনের ফাইলটি প্রত্যাশা করা কমান্ড ব্যবহার করতে /dev/fd/63
বা অনুরূপ করতে পারে না )। এই ব্যর্থতাটি gcc
কেবল সাম্প্রতিকতম। প্রক্রিয়া প্রতিস্থাপন এইভাবে ব্যর্থ হবে এবং ব্যবহার করা উচিত হবে না তা নির্ধারণ করার জন্য আমার কিছু সচেতন নিয়ম আছে?
আমি উবুন্টু 12.04 এ এই বেস সংস্করণটি ব্যবহার করছি (আমি এটি খিলান এবং
ডিবিয়ানেও দেখেছি): জিএনইউ ব্যাশ, সংস্করণ 4.3.11 (1) -রেলিজ (i686-pc-linux-gnu)
gcc -xc <(echo 'int main(){return 0;}')
(যা C
স্পষ্টভাবে ভাষা সেট করে )।
illegal seek
উত্তর মত দেখাচ্ছে -|pipe
যেbash
করতে মৃত্যুদন্ড কার্যকর প্রোগ্রাম পয়েন্ট একটি seekable ফাইল নয়। সম্ভবত আপনি যদিecho data | command /dev/fd/0
কোনও প্রোগ্রামে সফলভাবে না পারতে পারেন তবে আপনার ভাগ্যের ডাব্লু / হবে<(cmd)
। এটি কোনও ডিস্ক ফাইল সরবরাহ করে না - এটি কেবলমাত্র একটি যুক্তি প্রতিস্থাপন করে যা পাইপ ফাইলের বর্ণনাকারীকে নির্দেশ করে।