Ich habe einen Prozessnamen und ich muss ein kill()
Signal an diesen Prozess senden, aber ich brauche seine PID, um kill()
aufzurufen. Ich möchte nur verwenden:Find PID eines Prozesses nach Name ohne Verwendung von popen() oder system()
popen("pidof process_name");
als letzte Sache. Gibt es eine andere Möglichkeit, den PID Prozess herauszufinden? Eine Möglichkeit, an die ich denken könnte, ist, eine Socket-Anfrage an diesen Prozess zu senden und nach seiner PID zu fragen.
Der andere Weg ist ein wenig zu kompliziert für einen einfachen Code Ich schreibe: zu tun, was pidof command's source code tatsächlich tut (es verwendet einen Funktionsaufruf find_pid_by_name()
, aber das macht eine Menge Dinge).
Wenn keine einfache Lösung möglich ist, habe ich dies zu tun:
system("pkill <process_name>");
und überprüfen Sie die Return-Code. Aber wird es auf allen Linux-Rechnern sicher verfügbar sein?
sollte ziemlich einfach mit boost :: regex und boost :: filesystem ich denke, –
ich einmal sah in die strace-Ausgabe von pidof, und dachte, es tut es auf die gleiche Weise. (kann sich aber zwischendurch geändert haben) –
procfs liest sind sehr günstig. Für diesen speziellen Zweck müssten Sie nicht wirklich anfangen zu lesen, bis Sie PID 1000 erreichen, dann müssen Sie 40 - 60 untersuchen. Denken Sie nicht an das Lesen eines konventionellen FS, es ist viel billiger. –