क्या सी में एक प्रोग्राम लिखना संभव है कि निष्पादन पर स्वयं (बाइनरी) हटा दिया जाता है और फिर सफलतापूर्वक समाप्त हो जाता है। यदि हां, तो ऐसा करने का सबसे आसान तरीका क्या है?क्या सी में एक आत्म विनाशकारी कार्यक्रम लिखना संभव है?
उत्तर
हां।
#include <unistd.h>
int main(int argc, char* argv[])
{
return unlink(argv[0]);
}
(परीक्षण किया और काम करता है।)
नोट कि अगर argv[0]
बाइनरी को इंगित नहीं करता है (फोन करने वाले द्वारा फिर से लिखा) इस काम नहीं करेगा। इसी तरह यदि एक सिम्लिंक के माध्यम से चलाया जाता है तो बाइनरी नहीं, सिमलिंक हटा दिया जाएगा।
इसके अलावा, अगर फ़ाइल एकाधिक कठिन संबंध हैं, केवल बुलाया लिंक हटा दिया जाएगा।
महान काम करता है - धन्यवाद! –
ठीक है, फिर +1)। –
यहां हम बाइनरी के मार्ग के रूप में 'argv [0]' की विश्वसनीयता के बारे में सामान्य व्यवसाय में आते हैं। POSIX का कहना है कि * बाइनरी को इंगित करना चाहिए, लेकिन इसकी आवश्यकता नहीं है और एपीआई प्रोग्राम्स को इसे किसी अन्य चीज़ पर सेट करने की अनुमति देता है। अंत परिणाम यह है कि यह आमतौर पर काम करता है, लेकिन विश्वसनीय नहीं है। इसके अलावा, यहां तक कि यदि आपके पास सही पथ है, तो बाइनरी एक से अधिक स्थानों पर हार्डलिंक हो सकती है। – dmckee
तुम बस कार्यक्रम (फ़ाइल * और सामान) में निष्पादन को हटाने का प्रयास कर सकता है ... लेकिन यह है कि निष्पादन योग्य के रूप में देख रहा है यह काम नहीं हो सकता है क्या चलाया जा रहा है। मैं इसे खुद को खाने की तरह देखता हूं, और जहां तक मुझे पता है कि यह संभव नहीं है, लेकिन आप निश्चित रूप से ऊपर वर्णित विधि का उपयोग करके इसे आज़मा सकते हैं।
मुझे लगता है कि यह मंच आप उपयोग कर रहे पर निर्भर है। असल में, निष्पादन योग्य लोड होने के बाद, बाइनरी में आने वाले किसी भी बदलाव से चल रहे प्रोग्राम को प्रभावित नहीं होता है। यूनिक्स में, यह मामला है, और आप अनलिंक सिस्टम कॉल का उपयोग कर सकते हैं।
मुझे यकीन है कि क्या यह विंडोज या नहीं पर सच है नहीं कर रहा हूँ। निष्पादन योग्य छवि को हटाने की अनुमति नहीं दी जा सकती है। आप विंडोज़ में DeleteFile() एपीआई आज़मा सकते हैं।
यदि आप ऑपरेटिंग सिस्टम एक चल रहे प्रोग्राम को अपनी बाइनरी हटाने की अनुमति देता है, तो बस फ़ाइल हटाने के लिए एपीआई की तलाश करें, या संबंधित system()
कमांड निष्पादित करें।
ओएस इस की अनुमति नहीं है, तो अपने कार्यक्रम एक और द्विआधारी निर्माण कर सकता है, किसी अन्य प्रोग्राम से युक्त (यह एक कॉल) (यह बी कॉल)। फिर, ए तुरंत छोड़ दिया जाएगा।
कार्यक्रम बी एकल लूप पता चल सके कि एक अभी भी रूप में जल्द ही के रूप में एक इस्तीफा, बी चल रहा है और मिटा होगा एक के द्विआधारी होगा।
रिवर्स लिटिल जॉन! –
लेकिन बी के बारे में क्या - यह दोहरी आत्महत्या की तरह गलत हो गया है। –
ठीक है, मिशन ए को मारना था, है ना? बी कुछ अस्थायी फ़ोल्डर में आराम कर सकता है और कभी-कभी बाहर निकलने का इंतजार कर सकता है। – Imp
मुझे लगता है कि एक वास्तव में एक मंच स्वतंत्र तरीके से यह कर सकते हैं आसानी से पता नहीं है, लेकिन आप मंच स्वतंत्रता निर्दिष्ट नहीं किया है, तो निम्नलिखित की कोशिश, लिनक्स शैली कोड:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv) {
printf("Read carefully! You cannot print this message again.\n");
return unlink(argv[0]);
}
कैसे पास क्या आप चाहते हैं कि?
यह मुख्य रूप से तर्कों का सबसे कठिन टाइपिंग है() मैंने कभी देखा है। – blueshift
वाह। यह काम करता हैं। क्या आप इस तर्क प्रकार के बारे में समझा सकते हैं? – Jack
वे संयोग से 'मुख्य' के लिए गैर मानक तर्क हैं। यह देखते हुए, यह केवल आपके उदाहरण कोड को समझने के लिए एक नए आने के लिए कड़ी मेहनत करता है ... –
- 1. उद्देश्य सी में [आत्म आत्म] का क्या अर्थ है?
- 2. सी में एक node.js एक्सटेंशन लिखना संभव है (सी ++ नहीं)?
- 3. सी ++ में पूर्णांक कितना विनाशकारी है?
- 4. क्या वाक्यविन्यास लिखना संभव है -()()?
- 5. क्या सी ++ में जेनेरिक वैरैडिक ज़िप लिखना संभव है?
- 6. क्या पाइथन में फ़ायरवॉल लिखना संभव है?
- 7. क्या एक लाइन में पर्ल फोरैच लूप लिखना संभव है?
- 8. अक्का में 'आत्म' क्या है?
- 9. क्या स्काइप क्लाइंट लिखना संभव है?
- 10. कई आत्म-प्रकार संभव हैं?
- 11. क्या पाइथन में वीएलसी प्लगइन लिखना संभव है?
- 12. क्या .NET में रंग में कंसोल को लिखना संभव है?
- 13. कॉफीस्क्रिप्ट में प्रोटोविस कोड लिखना संभव है?
- 14. क्या कोड लिखने के लिए कोड लिखना संभव है?
- 15. सी ++ आत्म आकलन - ऑनलाइन
- 16. जावास्क्रिप्ट में वेब क्रॉलर लिखना संभव है?
- 17. क्या डेल्फी के डीबगर में एक्सटेंशन लिखना संभव है?
- 18. क्या vb.net या C# में असेंबली कोड लिखना संभव है?
- 19. क्या वीएचडीएल में टाइप-जेनेरिक इकाइयां लिखना संभव है?
- 20. क्या जावास्क्रिप्ट निष्पादन में mongodb कंसोल को लिखना संभव है?
- 21. "आत्म" आवश्यक है?
- 22. गिट में विनाशकारी आदेश क्या हैं?
- 23. सी कोड (जीसीसी) में एक कार्यक्रम अनुभाग
- 24. सी # में एक कंसोल रैपर लिखना?
- 25. रूबी के आत्म बनाम अजगर के आत्म
- 26. सी में एक EXT4 फ़ाइल सिस्टम लिखना?
- 27. कानूनी रूप से लिखना कैसे संभव है ::: सी ++ में और ??? सी # में?
- 28. क्या सी # में क्वैक के तेज़ InvSqrt() फ़ंक्शन को लिखना संभव है?
- 29. क्या एक ही समय में फ़ाइल में पढ़ना और लिखना संभव है?
- 30. क्या SQLite क्वेरी लिखना संभव है जो रूट आइटम नोड
यह शायद एक प्रोग्राम है जो exe फ़ाइल या जो कुछ भी हटाता है लिखने के लिए है, हालांकि आप कुछ हुप्स के माध्यम से कूद करने के बाद से कुछ वातावरण में ओएस .exe ताले, जबकि यह क्रियान्वित हो सकता है संभव है। –