में अपने पिड से प्रक्रिया का नाम उसकी पिड से प्रक्रिया का नाम कैसे प्राप्त करें? उदाहरण के लिए मैं cat file1.txt निष्पादित करता हूं, लेकिन मैं सिस्टम में अपने पिड के बाद उस बिल्ली कमांड और इसके तर्कों को समझना चाहता हूं। क्या यह निर्धारित करने के लिए कोई संरचना है या कुछ समान है? कोई उपाय?लिनक्स
लिनक्स
उत्तर
इस यूनिक्स को करने का कोई सामान्य तरीका नहीं है।
प्रत्येक ओएस के पास इसे संभालने के विभिन्न तरीके हैं और कुछ बहुत कठिन हैं। हालांकि आप लिनक्स का जिक्र करते हैं। लिनक्स के साथ, जानकारी/proc फाइल सिस्टम में है।
प्रक्रिया आईडी 99 99 के लिए कमांड लाइन प्राप्त करने के लिए, फ़ाइल /proc/9999/cmdline
पढ़ें।
और प्रक्रिया आईडी 99 99 के लिए प्रक्रिया का नाम प्राप्त करने के लिए, पढ़ें फाइल '/ proc/9999/comm'। –
सवाल यह था कि प्रक्रिया नाम कैसे प्राप्त करें, कमांडलाइन नहीं। मेरे SUSE पर मैं एक kwrite प्रक्रिया के लिए 'head/proc/9999/cmdline' दर्ज करता हूं और यह लौटाता है: 'kdeinit4: kwrite [kdeinit]'। यदि मैं/cmdline के बजाय/comm का उपयोग करता हूं तो मुझे सही परिणाम मिलता है: 'kwrite'। – Elmue
लिनक्स पर, आप /proc/
देख सकते हैं। अधिक जानकारी के लिए man proc
टाइप करने का प्रयास करें। /proc/$PID/cmdline
की सामग्री आपको कमांड लाइन देगी जो $PID
को संसाधित करती है। खुद की जांच के लिए /proc/self
भी है :)
एक विकल्प (जैसे मैक ओएस एक्स) libproc
का उपयोग करना है। libproc.h देखें।
POSIX सी पीआईडी द्वारा प्रक्रिया नाम प्राप्त करने के लिए मानक API देने का समर्थन नहीं करता है।
लिनक्स में, आप LINUX प्रो एपीआई:/proc/$ PID/cmdline द्वारा नाम प्राप्त कर सकते हैं। और कोड इस तरह दिखता है:
const char* get_process_name_by_pid(const int pid)
{
char* name = (char*)calloc(1024,sizeof(char));
if(name){
sprintf(name, "/proc/%d/cmdline",pid);
FILE* f = fopen(name,"r");
if(f){
size_t size;
size = fread(name, sizeof(char), 1024, f);
if(size>0){
if('\n'==name[size-1])
name[size-1]='\0';
}
fclose(f);
}
}
return name;
}
और यदि आप यहां आए थे मोनो के साथ काम कर रहे सी # में समाधान, फिर इसे देखें: http://stackoverflow.com/questions/29827331/workaround-for-bug-in-mono-wrong-process-processname-solved – Elmue
एक प्रक्रिया आईडी की प्रक्रिया नाम प्राप्त करने के लिए 9000 उपयोग इस आदेश का कहना है:
ps -p 9000 -o comm=
इस सवाल का जवाब दिया गया है, मैं चाहता हूँ जोड़ने के लिए मेरी 2 सेंट
मेरे मामले में, जब प्रक्रिया 1111 पाइप के माध्यम से प्रक्रिया 22222 बनाता है (कम से कम यह मैंने सुना है),/proc/2222/cmdline सही प्रक्रिया नाम नहीं देता है, लेकिन इसके बजाय 1111_1 की तरह कुछ देता है। मुझे सही प्रक्रिया नाम प्राप्त करने के लिए/proc/2222/comm का उपयोग करना होगा।
- 1. लिनक्स
- 2. लिनक्स
- 3. लिनक्स
- 4. लिनक्स
- 5. लिनक्स
- 6. लिनक्स
- 7. लिनक्स
- 8. लिनक्स
- 9. लिनक्स
- 10. लिनक्स
- 11. लिनक्स
- 12. लिनक्स
- 13. लिनक्स
- 14. लिनक्स
- 15. लिनक्स
- 16. लिनक्स
- 17. लिनक्स
- 18. लिनक्स
- 19. लिनक्स
- 20. लिनक्स
- 21. लिनक्स
- 22. लिनक्स
- 23. लिनक्स
- 24. लिनक्स
- 25. लिनक्स
- 26. लिनक्स
- 27. लिनक्स
- 28. लिनक्स
- 29. लिनक्स
- 30. लिनक्स
संभावित डुप्लिकेट [पीआईडी द्वारा प्रक्रिया का नाम प्राप्त करें] (http://stackoverflow.com/questions/4189717/get-process-name-by-pid) – Hasturkun