Cả ba đều thuộc module child_process, tạo tiến trình con để chạy việc ngoài event loop, nhưng khác về cách nhận kết quả:
spawn(cmd, args): chạy lệnh và trả về streamstdout/stderr. Không buffer toàn bộ output → hợp với dữ liệu lớn hoặc tiến trình chạy lâu. Mặc định không qua shell.exec(cmd, cb): chạy lệnh trong shell, buffer toàn bộ output rồi trả một lần qua callback. Tiện cho lệnh ngắn; output vượtmaxBuffer(mặc định ~1MB) sẽ lỗi. Vì qua shell nên cẩn thận command injection.fork(module): trường hợp đặc biệt củaspawnchỉ để chạy một file Node.js khác, tự lập sẵn kênh IPC để cha–consend()message cho nhau. Dùng cho worker/tiến trình nền.
Mẹo nhớ: spawn = stream, exec = buffer + shell, fork = spawn Node có IPC.