<ก่อนหน้านี้ | Contents | ถัดไป>
รอ
เราจะสาธิตการ รอ สั่งก่อน. ในการดำเนินการนี้ เราจำเป็นต้องมีสองสคริปต์ สคริปต์ระดับบนสุด:
#! / bin / ทุบตี
# async-parent: การสาธิตการดำเนินการแบบอะซิงโครนัส (พาเรนต์) echo "พาเรนต์: กำลังเริ่มต้น ... "
echo "Parent: เรียกใช้สคริปต์ลูก ... " async-child &
พิด=$!
echo "ผู้ปกครอง: ลูก (PID= $pid) เปิดตัว"
echo "ผู้ปกครอง: ดำเนินการต่อ ... " นอนหลับ 2
echo "ผู้ปกครอง: หยุดชั่วคราวเพื่อรอให้ลูกเสร็จสิ้น..." รอ $pid
echo "ผู้ปกครอง: ลูกเสร็จแล้ว กำลังดำเนินการต่อไป..." echo "ผู้ปกครอง: ผู้ปกครองเสร็จสิ้น ออก"
#! / bin / ทุบตี
# async-parent: การสาธิตการดำเนินการแบบอะซิงโครนัส (พาเรนต์) echo "พาเรนต์: กำลังเริ่มต้น ... "
echo "Parent: เรียกใช้สคริปต์ลูก ... " async-child &
พิด=$!
echo "ผู้ปกครอง: ลูก (PID= $pid) เปิดตัว"
echo "ผู้ปกครอง: ดำเนินการต่อ ... " นอนหลับ 2
echo "ผู้ปกครอง: หยุดชั่วคราวเพื่อรอให้ลูกเสร็จสิ้น..." รอ $pid
echo "ผู้ปกครอง: ลูกเสร็จแล้ว กำลังดำเนินการต่อไป..." echo "ผู้ปกครอง: ผู้ปกครองเสร็จสิ้น ออก"
และสคริปต์ลูก:
#! / bin / ทุบตี
# async-child: การสาธิตการดำเนินการแบบอะซิงโครนัส (ลูก) echo "ลูก: ลูกกำลังทำงานอยู่ ... "
นอนหลับ 5
echo "ลูก: ลูกเสร็จแล้ว กำลังออก"
#! / bin / ทุบตี
# async-child: การสาธิตการดำเนินการแบบอะซิงโครนัส (ลูก) echo "ลูก: ลูกกำลังทำงานอยู่ ... "
นอนหลับ 5
echo "ลูก: ลูกเสร็จแล้ว กำลังออก"
ในตัวอย่างนี้ เราเห็นว่าสคริปต์ลูกนั้นง่ายมาก การกระทำที่แท้จริงกำลังถูกสร้างโดยผู้ปกครอง ในสคริปต์หลัก สคริปต์ลูกจะถูกเปิดใช้และใส่ไว้ในพื้นหลัง ID กระบวนการของสคริปต์ลูกถูกบันทึกโดยการกำหนด pid ตัวแปรที่มีค่าของ $! พารามิเตอร์เชลล์ ซึ่งจะมี ID กระบวนการของงานสุดท้ายที่ใส่ในพื้นหลังเสมอ
สคริปต์หลักดำเนินการต่อและดำเนินการ a รอ คำสั่งด้วย PID ของกระบวนการลูก ซึ่งทำให้สคริปต์หลักหยุดชั่วคราวจนกว่าสคริปต์ลูกจะออก ซึ่งเป็นจุดสิ้นสุดของสคริปต์หลัก
เมื่อดำเนินการ สคริปต์พาเรนต์และลูกจะสร้างเอาต์พุตต่อไปนี้:
[me@linuxbox ~]$ async-ผู้ปกครอง
พ่อบ้าน : เริ่ม...
[me@linuxbox ~]$ async-ผู้ปกครอง
พ่อบ้าน : เริ่ม...
การดำเนินการแบบอะซิงโครนัส
พาเรนต์: เรียกใช้สคริปต์ลูก... พาเรนต์: เปิดลูก (PID= 6741) แล้ว ผู้ปกครอง: ต่อ...
เด็ก : เด็กวิ่ง...
แม่: หยุดชั่วคราวเพื่อรอให้ลูกทำเสร็จ... ลูก: ลูกเสร็จแล้ว. ออก.
ผู้ปกครอง: ลูกเสร็จแล้ว ต่อ... Parent: parent เสร็จแล้ว. ออก.
พาเรนต์: เรียกใช้สคริปต์ลูก... พาเรนต์: เปิดลูก (PID= 6741) แล้ว ผู้ปกครอง: ต่อ...
เด็ก : เด็กวิ่ง...
แม่: หยุดชั่วคราวเพื่อรอให้ลูกทำเสร็จ... ลูก: ลูกเสร็จแล้ว. ออก.
ผู้ปกครอง: ลูกเสร็จแล้ว ต่อ... Parent: parent เสร็จแล้ว. ออก.