এই কাঁটাচামচ বোমা সর্বদা আমাকে এমন কিছু স্মরণ করিয়ে দেয় যা এআই প্রোগ্রামিংয়ের একজন শিক্ষক আমি যে প্রথম পাঠ্য পাঠ করেছিলাম তার একটিতে "পুনরাবৃত্তি বুঝতে, প্রথমে আপনাকে অবশ্যই পুনরাবৃত্তি বুঝতে হবে" said
মূলত, এই বোমাটি একটি পুনরাবৃত্তি ফাংশন। সংক্ষেপে, আপনি একটি ফাংশন তৈরি করেন, যা নিজেকে কল করে, যে নিজেকে কল করে, যা নিজেকে কল করে .... যতক্ষণ না সিস্টেম সংস্থানগুলি গ্রাস হয়। এই নির্দিষ্ট ক্ষেত্রে, পুনরাবৃত্তিটি নিজের মধ্যে ফাংশনটি পাইপ করে এবং এর ব্যাকগ্রাউন্ড করে প্রশস্ত করা হয়।
আমি স্ট্যাক ওভারফ্লোতে এটির উত্তর দেখেছি এবং আমি মনে করি যে সেখানে দেওয়া উদাহরণটি এটি সর্বোত্তমভাবে ব্যাখ্যা করে, কেবল কারণ এটি এক নজরে কী করে তা দেখতে সহজ (উপরের লিঙ্কটি থেকে চুরি হয়েছে ...)
☃(){ ☃|☃& };☃
বাগ ফাংশনটি সংজ্ঞায়িত করুন ☃() { ... }
, যার দেহ নিজেকে কল করে (বাগ ফাংশন), আউটপুটটিকে নিজের কাছে পাইপ করে (বাগ ফাংশন) ☃|☃
, এবং ফলাফলকে ব্যাকগ্রাউন্ড করে &
। তারপরে, ফাংশনটি সংজ্ঞায়িত হওয়ার পরে, বাগ বাগের ফাংশনটি কল করুন ; ☃
।
আমি নোট করি যে কমপক্ষে আমার আর্চ ভিএম-তে, প্রক্রিয়াটির ব্যাকগ্রাউন্ডের প্রয়োজনীয়তা একই রকমের শেষ ফলাফল হওয়া প্রয়োজন নয়, সমস্ত উপলব্ধ প্রক্রিয়া স্থানটি গ্রাহ্য করতে এবং হোস্টকে বি0rked রেন্ডার করতে হবে। আসলে এখন আমি বলেছি যে এটি কখনও কখনও রান আউট প্রক্রিয়াটি শেষ করে দেবে বলে মনে হয় এবং এর স্ক্রিনফুলের পরে -bash: fork: Resource temporarily unavailable
একটি Terminated
(এবং journalctl
বাশ কোর ডাম্পিং দেখায়) বন্ধ হয়ে যায়।
Csh / tcsh সম্পর্কে আপনার প্রশ্নের উত্তর দেওয়ার জন্য, এই শেলগুলির কোনওটিই ফাংশন সমর্থন করে না, আপনি কেবলমাত্র উপনাম করতে পারেন। সুতরাং এই শেলগুলির জন্য আপনাকে একটি শেল স্ক্রিপ্ট লিখতে হবে যা নিজেকে পুনরাবৃত্তি বলে।
zsh একই ভাগ্য (একই কোড সহ) ভুগছে বলে মনে হচ্ছে, কোর ডাম্প দেয় না এবং আর্চকে দেয় Out of memory: Kill process 216 (zsh) score 0 or sacrifice child.
, তবে এটি এখনও কাঁটাচামচ অবিরত করে। কিছুক্ষণ পরে এটি জানায় Killed process 162 (systemd-logind) ...
(এবং এখনও একটি কাঁটা zsh থাকা অবিরত)।
আর্কের pacman
কাছে ksh এর কোনও সংস্করণ নেই বলে মনে হচ্ছে , সুতরাং এর পরিবর্তে আমাকে এটি ডিবিয়ানে চেষ্টা করে দেখতে হয়েছিল। ksh অবজেক্টগুলিকে :
একটি ফাংশন নাম হিসাবে, তবে কিছু ব্যবহার করে বলুন - এর b()
পরিবর্তে পছন্দসই ফলাফল বলে মনে হচ্ছে।