এখানে আমরা দেখব C-তে কীভাবে সেলফ-ডেস্ট্রাক্টিং কোড তৈরি করা যায়। সেলফ-ডেস্ট্রাক্টিং কোড মানে কোডটি এক্সিকিউট হওয়ার পর এক্সিকিউটেবল ফাইলটি অটোমেটিকভাবে মুছে ফেলা।
এটি খুব সহজ। এক্সিকিউটেবল ফাইলের নাম পেতে হবে যাতে সেটি মুছে ফেলা যায়। আমরা কমান্ড লাইন আর্গুমেন্ট ব্যবহার করতে পারি। `argv[0]` এক্সিকিউটেবল ফাইলের নাম ধারণ করে। তারপর `remove()` ফাংশন ব্যবহার করে সেটি মুছে ফেলা যায়।
প্রোগ্রামে দেখা যাবে ফাইল মুছে ফেলার পরেও একটি লাইন প্রিন্ট হচ্ছে। প্রশ্ন হলো করেন্ট ফাইল ন रहनेও পরবর্তী লাইন কীভাবে এক্সিকিউট হচ্ছে?
বস্তুতঃ এক্সিকিউশনের আগে পুরো কোড প্রাইমারি মেমরিতে কপি হয়। এক্সিকিউটেবল ফাইলের কন্টেন্ট কপি হয়, ফাইলটিই সরাসরি ব্যবহার হয় না। তাই প্রাইমারি মেমরি থেকে পরবর্তী লাইনটি এক্সিকিউট হয়।
উদাহরণ
#include <stdio.h>
int main(int c, char *argv[]) {
printf("After completing this, the file will be removed\n");
remove(argv[0]); // argv[0] হলো এক্সিকিউটেবলের নাম
printf("Removed\n");
return 0;
}
আউটপুট
After completing this, the file will be removed Removed