Trên thực tế, có một cách để làm điều này. Kể từ hạt nhân 3.3 với CONFIG_CHECKPOINT_RESTORE thiết lập (được đặt trong hầu hết các bản phân phối), có/proc/sys/kernel/ns_last_pid chứa pid cuối cùng được tạo ra bởi hạt nhân. Vì vậy, nếu bạn muốn thiết lập PID cho chương trình chia hai, bạn cần phải thực hiện những hành động này:
- Mở/proc/sys/kernel/ns_last_pid và nhận fd
- bầy nó với LOCK_EX
- ghi PID- 1
- ngã ba
Voilà! Trẻ sẽ có PID mà bạn muốn. Ngoài ra, đừng quên mở khóa (đổ bằng LOCK_UN) và đóng ns_last_pid.
Bạn có thể kiểm tra mã C tại blog của mình here.
Nguồn
2014-06-14 22:36:53
Mùi giống như vấn đề XY. Tại sao bạn cần pid trước? –
Từ những gì tôi biết về Linux và Unices nói chung, tôi sẽ ngạc nhiên nếu bạn có thể làm điều đó, nhưng có rất nhiều cách để tìm ra PID của một quá trình cho trước khi nó đang chạy. Có lẽ bạn nên giải thích những gì bạn muốn làm và đưa ra đề xuất về lựa chọn thay thế. – deStrangis
Câu trả lời ngắn gọn là không. – devnull