2012-02-05 21 views
6

Trong POSIX, có chức năng fork() để tạo một tiến trình con. Làm thế nào tôi có thể đạt được chức năng của fork() trong Windows?Làm cách nào để bắt đầu quá trình con trong Windows?

+4

Điều gì muốn biết? Làm thế nào để tạo một chương trình chuỗi trên Windows? – Mithrandir

+0

Ồ, không, tôi gặp rắc rối khi tôi nghiên cứu Linux ... Trên Windows, chúng tôi có thể sử dụng hàm CreateThread (...) để tạo chuỗi. Nhưng trên Linux, có một hàm fork() để tạo ra một tiến trình con, tôi muốn biết wehter có chức năng tương tự như fork() trên Window ... –

+0

Theo như tôi biết yu có thể sử dụng _spawn(), _beginthread () và _endthread(). – Mithrandir

Trả lời

7

Không có tương đương trực tiếp là fork() trên Windows.

CreateProcess() là hàm gốc có thể được sử dụng để tạo quy trình mới (nhưng, một lần nữa, ngữ nghĩa khác với các số fork()).

Để đặt điều này theo cách khác, trên Unix, có thể là một quá trình để tạo ra một bản sao rẻ tiền của chính nó. Không có cách nào rẻ tiền để làm điều này trên Windows.

Nếu bạn không quan tâm đến khía cạnh nhân bản của fork(), thì CreateProcess() chỉ nên làm tốt.

+0

Nhưng, điểm khác nhau giữa CreateProcess() và fork() là gì? –

+4

@Tu_JianWu: quy trình mới được tạo bởi fork() kế thừa trạng thái của cha mẹ, bao gồm giá trị của các biến và con trỏ lệnh hiện tại. Quá trình mới được tạo bởi CreateProcess() không, nó được bắt đầu từ đầu. Ngoài ra fork() chỉ có thể tạo một bản sao mới của tệp thực thi đang chạy, CreateProcess() có thể khởi chạy bất kỳ tệp nào có giá trị. –

+0

@Harry Johnston: Cảm ơn ... –

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