#include <iostream>
#include <unistd.h>
#include <stdlib.h>
int main() {
std::cout << 1;
fork();
exit(0);
}
fork
được đặt sau khi phát trực tiếp vào cout
, nhưng mã này in 11. Tại sao? Và tại sao mã chỉ in 1 nếu std::endl
được thêm vào cout
?Tại sao fork() dẫn đến kết quả trùng lặp?
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
int main() {
std::cout << 1 << std::endl;
fork();
exit(0);
}
Bộ đệm được xả hai lần, trong hai quy trình. Người đàn ông, điều đó phải gây phiền nhiễu. –
Thật không may, các đối tượng C++ không chơi tốt với chế độ forking. Về cơ bản, đối tượng được sao chép một cách hiệu quả mà không cần sao chép-xây dựng nó, và điều này phá vỡ rất nhiều bảo vệ được xây dựng bởi C + +. – SergeyA
Tôi chỉ có thể tưởng tượng sự tàn phá của một 'fork()' sẽ làm hỏng các thùng chứa tiêu chuẩn. Chỉ cần không làm điều này. –