का उपयोग किए बिना किसी प्रक्रिया के पीआईडी को ढूंढें मेरे पास एक प्रक्रिया का नाम है और मुझे kill()
उस प्रक्रिया को सिग्नल भेजना है, लेकिन मुझे kill()
पर कॉल करने के लिए इसकी पीआईडी चाहिए। मैं केवल उपयोग करना चाहते हैं:पॉपन() या सिस्टम()
popen("pidof process_name");
आखिरी बात के रूप में
। क्या प्रक्रिया 'पीआईडी' खोजने का कोई और तरीका है? एक तरीका मैं सोच सकता था कि उस प्रक्रिया के लिए सॉकेट अनुरोध भेजना और उसके पीआईडी से पूछना है।
दूसरा तरीका एक साधारण कोड के लिए थोड़ा जटिल है जो मैं लिख रहा हूं: ऐसा करने के लिए pidof command's source code वास्तव में कर रहा है (यह फ़ंक्शन कॉल find_pid_by_name()
का उपयोग करता है लेकिन यह बहुत सी चीजें कर रहा है)। अपनी वापसी कोड की जाँच
system("pkill <process_name>");
और:
कोई सरल उपाय संभव है, तो मैं यह करने के है। लेकिन क्या सभी लिनक्स मशीनों पर निश्चित रूप से उपलब्ध होगा?
सुंदर सीधे आगे होना चाहिए :: बढ़ावा का उपयोग कर regex और बढ़ावा देने :: फाइल सिस्टम मुझे लगता है कि मैं एक बार –
pidof की strace उत्पादन में देखा, और लगा कि यह उसी तरह से करता है। (बीच में परिवर्तित हो सकती है, हालांकि) –
procfs पढ़ता बहुत सस्ता कर रहे हैं। इस विशेष उद्देश्य के लिए, आपको पीआईडी 1000 तक पहुंचने तक वास्तव में पढ़ना शुरू नहीं करना पड़ेगा, फिर आपके पास जांच करने के लिए 40 - 60 है। पारंपरिक एफएस पढ़ने की तरह मत सोचो, यह बहुत सस्ता है। –