รับ id กระบวนการสำหรับสคริปต์ perl ปัจจุบัน


11

ฉันจะรับรหัสกระบวนการสำหรับกระบวนการ perl ที่ใช้งานสคริปต์ปัจจุบันได้อย่างไร getppid () ไม่ส่งคืนค่า pid เดียวกับ ps -ea | grep มีวิธีที่ง่ายหรือฉันเพียงแค่เรียกใช้คำสั่ง ps -ea ภายในสคริปต์ของฉันและตัดส่วนอื่น ๆ ของข้อมูลหรือไม่


ควรย้ายไปที่ stackoverflow.com
Ian C.

คำตอบ:


13

คุณสามารถใช้$$เพื่อรับ ID กระบวนการของล่าม perl ที่รันสคริปต์ของคุณ:

iancs-imac:Documents ian$ cat test.pl 
print "$$\n";
sleep(10000);
exit()

ians-imac:Documents ian$ perl test.pl 
42291

ในเปลือกอื่น:

iancs-imac:~ ian$ sudo ps -ef | grep perl
  501 42291 42281   0   0:00.00 ttys000    0:00.01 perl test.pl
  501 42297 42280   0   0:00.00 ttys001    0:00.00 grep perl

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตัวแปร Perl พิเศษ:

perldoc perlvar

หรือดูรุ่นออนไลน์อย่างเป็นทางการของข้อมูลที่


2

นอกจาก$$ที่ Ian กล่าวถึงฉันเป็นแฟนตัวยงของการสร้างโค้ดให้อ่านง่ายขึ้น

ด้วยเหตุนี้ Perl จึงสนับสนุนผู้ช่วยจำ$PIDหากคุณuse Englishเปิดใช้งานนามแฝง

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