Tôi đang ở trên OSX Mountain Lion và đang cố truy xuất tên của quy trình bằng cách sử dụng PID của nó.Nhận tên từ PID?
Sau đây là đoạn code tôi đang sử dụng:
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);
Đoạn mã trên có thể lấy tên đúng cách, tuy nhiên nó chỉ lấy 15 ký tự đầu tiên và "bỏ qua" phần còn lại. Lưu ý rằng đây không phải là vấn đề khi hiển thị tên nhưng với truy xuất. Vấn đề không phải là với phần còn lại của ứng dụng của tôi khi tôi đang thử nghiệm mã trên trong một ứng dụng độc lập. Cũng lưu ý rằng tôi đã thử thay đổi PID, nhưng bất kể PID nào tôi thử mã chỉ lấy 15 ký tự đầu tiên của tên. Khôi phục đường dẫn hoạt động hoàn hảo.
Có ai có bất kỳ ý tưởng nào về những gì tôi đang làm sai không?
Như tôi đã nghiên cứu vấn đề này, tôi tìm thấy một số kỳ lạ hơn. Nếu chiều dài bộ đệm được chỉ định nhỏ hơn 32 byte, không có gì sẽ được đặt vào chuỗi, ngay cả khi tên ngắn (và sẽ vừa với bộ đệm 31 byte) – charliehorse55