เนื้อหา
exec ตระกูลของฟังก์ชั่นแทนที่ภาพกระบวนการปัจจุบันด้วยภาพกระบวนการใหม่ ฟังก์ชั่นที่อธิบายไว้ที่นี่เป็นส่วนหน้าสำหรับฟังก์ชั่นexecve(2).
อาร์กิวเมนต์เริ่มต้นสำหรับฟังก์ชั่นเหล่านี้คือชื่อพา ธ ของไฟล์ที่จะดำเนินการ
const char * หาเรื่อง และจุดไข่ปลาที่ตามมาในexecl, execlpและexecle ฟังก์ชั่นสามารถคิดเป็นarg0, arg1, ..., argn. พวกเขาช่วยกันอธิบายรายการของพอยน์เตอร์หนึ่งตัวหรือมากกว่าไปยังสตริงที่สิ้นสุดด้วยค่า null ซึ่งแสดงรายการอาร์กิวเมนต์ที่มีให้กับโปรแกรมที่เรียกใช้งาน อาร์กิวเมนต์แรกโดยการประชุมควรชี้ไปที่ชื่อไฟล์ที่เกี่ยวข้องกับไฟล์ที่กำลังดำเนินการ รายการข้อโต้แย้งต้อง ถูกยกเลิกโดยโมฆะ ตัวชี้
execv และexecvp ฟังก์ชั่นให้อาร์เรย์ของตัวชี้ไปยังสตริงสิ้นสุดด้วย null ที่แสดงรายการอาร์กิวเมนต์ที่มีให้กับโปรแกรมใหม่ อาร์กิวเมนต์แรกโดยการประชุมควรชี้ไปที่ชื่อไฟล์ที่เกี่ยวข้องกับไฟล์ที่กำลังดำเนินการ อาเรย์ของพอยน์เตอร์ต้อง ถูกยกเลิกโดยโมฆะ ตัวชี้
execle ฟังก์ชั่นยังระบุสภาพแวดล้อมของกระบวนการที่ดำเนินการโดยทำตามโมฆะตัวชี้ที่ยุติรายการอาร์กิวเมนต์ในรายการพารามิเตอร์หรือตัวชี้ไปยังอาร์เรย์ argv ด้วยพารามิเตอร์เพิ่มเติม พารามิเตอร์เพิ่มเติมนี้คืออาร์เรย์ของพอยน์เตอร์เป็นสตริงที่สิ้นสุดด้วยค่า null และต้อง ถูกยกเลิกโดยโมฆะ ตัวชี้ ฟังก์ชั่นอื่นใช้สภาพแวดล้อมสำหรับภาพกระบวนการใหม่จากตัวแปรภายนอกสภาพแวดล้อม ในกระบวนการปัจจุบัน
ฟังก์ชันเหล่านี้บางส่วนมีความหมายพิเศษ
ส่วนฟังก์ชั่นexeclp และexecvp จะทำซ้ำการกระทำของเชลล์ในการค้นหาไฟล์เรียกทำงานหากชื่อไฟล์ที่ระบุไม่มีอักขระเครื่องหมายทับ (/) เส้นทางการค้นหาคือเส้นทางที่ระบุในสภาพแวดล้อมโดยเส้นทาง ตัวแปร. หากไม่ได้ระบุตัวแปรนี้จะใช้พา ธ เริ่มต้น ``: / bin: / usr / bin '' นอกจากนี้ข้อผิดพลาดบางอย่างจะได้รับการดูแลเป็นพิเศษ
หากสิทธิ์ถูกปฏิเสธสำหรับไฟล์ (ความพยายามexecve กลับEACCES) ฟังก์ชั่นเหล่านี้จะค้นหาส่วนที่เหลือของเส้นทางการค้นหาต่อไป หากไม่พบไฟล์อื่นไฟล์เหล่านั้นจะกลับมาพร้อมกับตัวแปรโกลบอลerrno ตั้งค่าให้EACCES.
หากส่วนหัวของไฟล์ไม่เป็นที่รู้จัก (ความพยายามexecve กลับENOEXEC) ฟังก์ชั่นเหล่านี้จะรันเชลล์ด้วยพา ธ ของไฟล์เป็นอาร์กิวเมนต์แรก (หากความพยายามนี้ล้มเหลวจะไม่มีการค้นหาเพิ่มเติมอีก)
ส่งคืนค่า
หากใด ๆ ของexec ฟังก์ชันจะส่งคืนข้อผิดพลาดจะเกิดขึ้น ค่าส่งคืนคือ -1 และตัวแปรโกลบอลerrno จะถูกตั้งค่าเพื่อระบุข้อผิดพลาด
ใช้ชาย คำสั่ง (% ชาย) เพื่อดูว่ามีการใช้คำสั่งในคอมพิวเตอร์ของคุณโดยเฉพาะอย่างไร
ชื่อ
execl, execlp, execle, execv, execvp - รันไฟล์
สรุป
#include extern ถ่าน ** สภาพแวดล้อม; int execl (const char *เส้นทาง, const char *หาเรื่อง, ... ); int execlp (const char *ไฟล์, const char *หาเรื่อง, ... ); int execle (const char *เส้นทาง, const char *หาเรื่อง , ... , char * constenvp[]); int execv (const char *เส้นทางถ่าน *argv[]); int execvp (กลุ่มถ่าน *ไฟล์ถ่าน *argv[]);