Tôi tên quá trình và tôi đã gửi tín hiệu kill()
đến quy trình đó nhưng tôi cần PID của nó để gọi kill()
. Tôi chỉ muốn sử dụng:Tìm PID của Quy trình theo Tên mà không sử dụng popen() hoặc hệ thống()
popen("pidof process_name");
là điều cuối cùng. Có cách nào khác để tìm ra quá trình 'PID? Một cách tôi có thể nghĩ là gửi một yêu cầu socket đến quá trình đó và yêu cầu PID của nó. Một cách khác là hơi quá phức tạp đối với một mã đơn giản mà tôi đang viết: để làm những gì pidof command's source code thực sự đang làm (nó sử dụng một hàm gọi find_pid_by_name()
nhưng điều đó đang làm rất nhiều thứ).
Nếu không có giải pháp đơn giản là có thể, tôi đã làm điều này:
system("pkill <process_name>");
và kiểm tra mã trở lại của mình. Nhưng pkill sẽ có sẵn cho chắc chắn trên tất cả các máy Linux?
nên được khá thẳng về phía trước bằng cách sử dụng tăng :: regex và tăng :: hệ thống tập tin tôi nghĩ rằng –
i một lần nhìn vào đầu ra strace của pidof, và figured nó hiện nó theo cùng một cách. (có thể đã thay đổi ở giữa, mặc dù) –
đọc procfs là rất rẻ. Đối với mục đích cụ thể này, bạn sẽ không phải bắt đầu thực sự đọc cho đến khi bạn đạt đến PID 1000, sau đó bạn có 40 - 60 để kiểm tra. Đừng nghĩ về nó như đọc một FS thông thường, rẻ hơn nhiều. –