Các phiên bản thi hành khác nhau được sử dụng trong C và C ++ là gì?


91

Đâ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:


181

Sự khác biệt là sự kết hợp của:

  1. 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ư

    • L : các thông số cá nhân trong cuộc gọi (danh sách đối số biến): execl(), execle(), execlp(), vàexeclpe()
    • V : là một mảng của char * 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.

  2. 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ự.

  3. 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.


1
Lời giải thích tốt nhất mà tôi đã thấy cho đến nay. Nó gần như ngắn gọn như tài liệu / tài liệu tham khảo chính thức, nhưng nó diễn đạt, thông tin và dễ hiểu hơn hàng nghìn lần. Cảm ơn bạn.
Akito

5

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


2
điều này không thực sự trả lời câu hỏi và chỉ là liên kết.
Jean-François Fabre

Trước khi đến đây, tôi đã đọc tài liệu trên trang web, nhưng nó không giúp ích được nhiều. Những lời giải thích rất ngắn gọn, mặc dù chúng phải được giải thích cặn kẽ. Ngoài ra, thật khó để tìm ra lời giải thích chính xác cho những gì bạn đang tìm kiếm, nếu bạn đang tìm kiếm từ đầu.
Akito

-4

Đó 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 đó.


2
Mặc dù liên kết này có thể trả lời câu hỏi, nhưng tốt hơn hết bạn nên đưa các phần thiết yếu của câu trả lời vào đây và cung cấp liên kết để tham khảo. Các câu trả lời chỉ có liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
31piy

Các liên kết đến amazon và posxis standart là hữu ích cho người đọc. Ok, tôi đã xóa các liên kết khi bạn yêu cầu, thậm chí tôi không đồng ý rằng điều này tốt hơn. Nhắc lại donwvote của bạn nếu bây giờ nó dễ đọc hơn.
bruziuz

1
Tôi đã không ủng hộ câu trả lời của bạn. Tôi vừa có đánh giá về câu trả lời của bạn, câu trả lời mà tôi nghĩ là có chất lượng thấp. Tôi không có ý xóa các liên kết. Vấn đề ở đây là bao gồm các đoạn trích liên quan từ liên kết giúp độc giả tương lai hiểu câu trả lời ngay lập tức. Chỉ đăng các liên kết trong câu trả lời không giúp ích cho ai cả.
31piy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.