pid สูงสุดสำหรับ Mac OS X คืออะไร


8

หนังสือ Mac OS X Internals ระบุว่าตัวระบุกระบวนการสูงสุดคือ 30,000 และหลังจากนั้นเคอร์เนลจะเริ่มใช้งาน pids อีกครั้ง แต่การตรวจสอบในระบบของฉันเองผ่าน:

ps a | grep ps | grep -v grep | awk '{print $1}'

ฉันเห็นได้ว่าฉันมี pids ที่สูงขึ้น ไม่มีใครรู้ว่ามีการตั้ง pid_max อย่างชัดเจนเช่นใน Linux?

คำตอบ:


14

มองไปที่การ sys / proc_internal.hใน xnu-1699.24.23 ผมพบว่า PID_MAX เป็น 99999. ค่าจะถูกนำมาใช้ในkern_fork.cforkprocในการทำงาน เมื่อดูที่ฟังก์ชันนั้น ID กระบวนการจะไม่ถูกกำหนดเท่ากับ PID_MAX ดังนั้น pid ที่เป็นไปได้สูงสุดคือ 99998


4
หนังสือเล่มนี้ล้าสมัยมันใช้เป็น 30000 (xnu-792 - Tiger) และเปลี่ยนเป็น 99999 เมื่อ xnu-1228 วางจำหน่าย (Leopard)
Stu Wilson

6

คำตอบของ Kyleยังคงใช้ได้ในปัจจุบัน ในกรณีที่คุณต้องการตรวจสอบว่านี่คือเชลล์สคริปต์:

#!/bin/bash

pid=0
for i in {1..100000}; do
  : &
  if [ $! -lt $pid ]; then
    echo "Min pid: $!"
    echo "Max pid: $pid"
    break
  fi
  pid=$!
done

ภาพพิมพ์นี้:

Min pid: 100
Max pid: 99998
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.