Có vẻ như là hai cách phổ biến của chạy một thực thi bên ngoài từ C trong unix, cácvào hệ thống() hoặc fork()/exec()?
system()
cuộc gọi và
pid = fork()
switch(pid)
//switch statement based on return value of pid,
//one branch of which will include and exec() command
Có lý do nào để thích một ngã ba/exec trên hệ thống trong trường hợp chúng tương đương về mặt chức năng (quá trình cha mẹ chờ trẻ kết thúc, không có thông tin phức tạp nào được trả về từ trẻ) ?.
Tôi hỏi prof của tôi sự khác biệt là gì và anh ấy nói 'system()' là một API cho hệ điều hành và 'fork/exec' là các cuộc gọi cấp hệ thống. Điều này có đúng không? Sự hiểu biết của tôi là các API cho hệ điều hành an toàn hơn theo nghĩa là chúng có thể chứa kiểm tra bổ sung, trái ngược với các cuộc gọi hệ thống. – Celeritas
@Celeritas Theo nghĩa nào đó (các cuộc gọi hệ thống cũng là các API hệ điều hành), nhưng kết luận của bạn là sai, như tôi đã lập luận trong câu trả lời. 'system' không thêm kiểm tra; nó thêm chức năng không được kiểm soát. –