2012-02-03 42 views
5

Tôi sử dụng execv thay vì execl. Để sử dụng execv, tôi tạo một mảng và đặt đối số mà tôi sử dụng với execl trong đó. Sau đó, tôi đặt mảng này vào execvSự khác biệt giữa execl và execv là gì?

Tôi biết tôi phải sử dụng một loạt đối số cho execv nhưng tại sao? Sự khác nhau giữa execlexecv là gì?

Trả lời

6

Không có sự khác biệt nào ngoài định dạng của đối số. Cả hai đều sẽ gọi cùng một hệ thống cơ bản gọi execve().

+0

Tại sao chúng ta cần thay đổi định dạng của đối số? Tôi có nghĩa là nếu họ đang làm điều tương tự –

+2

Lệnh gọi hệ thống 'execve()' (và 'execv()') lấy các đối số trong một mảng. 'execl()' chỉ được cung cấp như một sự tiện lợi, trong trường hợp bạn có một số đối số cố định, để cho phép bạn tránh được sự cố khi thiết lập một mảng. 'execl()' sẽ lưu các đối số hàm trong một mảng tạm thời và sau đó thực hiện cuộc gọi hệ thống. Nếu bạn tự thiết lập mảng đối số thì bạn không cần 'execl()'. – mark4o

Các vấn đề liên quan