Đây là tất cả các phiên bản của thực thi có thể được sử dụng trong C (và C ++)
execl
execle
execlp
execv
execve
execvp
Sự khác biệt giữa chúng là gì? Làm thế nào để bạn biết cái nào để sử dụng?
Câu trả lời:
Sự khác biệt là sự kết hợp của:
L vs V : liệu bạn có muốn truyền các tham số cho chương trình được thực thi như
execl()
, execle()
, execlp()
, vàexeclpe()
execv()
, execve()
, execvp()
, vàexecvpe()
Định dạng mảng hữu ích khi số lượng tham số sẽ được gửi đến quá trình được thực thi là thay đổi - như không được biết trước, vì vậy bạn không thể đưa vào một số lượng tham số cố định trong một lệnh gọi hàm.
E : Các phiên bản có chữ 'e' ở cuối cho phép bạn chuyển thêm một mảng char * là một tập hợp các chuỗi được thêm vào môi trường quy trình sinh sản trước khi chương trình được thực thi khởi chạy. Tuy nhiên, một cách khác để truyền tham số, thực sự.
P : Các phiên bản có 'p' trong đó sử dụng biến môi trường PATH
để tìm kiếm tệp thực thi được đặt tên để thực thi. Các phiên bản không có 'p' yêu cầu một đường dẫn tệp tuyệt đối hoặc tương đối được thêm vào trước tên tệp của tệp thực thi nếu nó không có trong thư mục làm việc hiện tại.
Opengroup là một trong những tham chiếu chung tốt nhất cho các hàm c / c ++ cốt lõi.
Tài liệu cho thực thi * có tại đây: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html
Đó là phần mở rộng Posix của thư viện thời gian chạy C. Nếu tài liệu chính thức của Posix không đủ thì tôi có thể giới thiệu cuốn sách - Samuel P. Harbison, Guy L.Steele, 2002 "Tài liệu tham khảo CA" Trang # 416 - đề cập đến câu hỏi đó.