मैं ओएसएक्स माउंटेन शेर पर हूं और अपने पीआईडी का उपयोग कर प्रक्रियाओं के नाम को पुनः प्राप्त करने की कोशिश कर रहा हूं।पीआईडी से नाम प्राप्त करें?
pid_t pid = 10687;
char pathBuffer [PROC_PIDPATHINFO_MAXSIZE] = "";
char nameBuffer [256] = "";
int sizeOfVal = sizeof(nameBuffer);
proc_pidpath(pid, pathBuffer, sizeof(pathBuffer));
proc_name(pid, nameBuffer, sizeof(nameBuffer));
NSLog(@"Path: %s\n Name: %s\n", pathBuffer, nameBuffer);
ऊपर कोड नाम ठीक से पुनः प्राप्त करने में सक्षम है, लेकिन यह केवल पहले 15 वर्ण प्राप्त करता है और "पर ध्यान नहीं देता" बाकी:
निम्नलिखित कोड मैं का उपयोग कर रहा है। नोट यह नाम प्रदर्शित करने में कोई समस्या नहीं है, लेकिन पुनर्प्राप्त करने के साथ। समस्या मेरे शेष एप्लिकेशन के साथ नहीं है क्योंकि मैं एक स्टैंडअलोन एप्लिकेशन में उपर्युक्त कोड का परीक्षण कर रहा हूं। यह भी ध्यान रखें कि मैंने पीआईडी को बदलने की कोशिश की, लेकिन इस बात पर ध्यान दिए बिना कि मैं जिस पीआईडी को कोड का प्रयास करता हूं, केवल नाम के पहले 15 अक्षर पुनर्प्राप्त करता है। पथ पुनर्प्राप्ति पूरी तरह से काम करता है।
क्या किसी के पास कोई गलत विचार है कि मैं क्या कर रहा हूं?
, मैं कुछ और अजीबता मिली। यदि निर्दिष्ट बफर लंबाई 32 बाइट से कम है, तो स्ट्रिंग में कुछ भी नहीं रखा जाएगा, भले ही नाम छोटा हो (और 31 बाइट बफर में फिट होगा) – charliehorse55