Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Khác biệt fork() và exec() trong C

fork(): Tạo tiến trình con (child) sao chép tiến trình cha (parent).

  • Child có PID riêng
  • PPID của child = PID của parent
  • Không kế thừa lock/semaphore

Trả về: PID child (ở parent), 0 (ở child), -1 (lỗi).

exec(): Thay thế tiến trình hiện tại bằng chương trình mới. Load chương trình vào bộ nhớ, chạy từ entry point.

Khác biệt chính: fork tạo bản sao chạy song song; exec thay thế tiến trình hiện tại.

Ví dụ fork + exec

pid_t pid = fork();
if (pid == 0) {
    // Child
    char* argv[] = {"ls", "-lart", "/home", NULL};
    execv("ls", argv);
    exit(0);
} else {
    // Parent
    waitpid(pid, &status, 0);
    // Kiểm tra status...
}