我正在尝试解决一个学校模拟问题,该问题涉及模拟具有一个员工(父流程)和多个客户(子流程)的商店。我简化了以下代码以突出测试时遇到的问题:
#define N_CUSTOMERS 10
void employee() {
}
void customer(int id) {
exit(0);
}
int main() {
printf("working!");
// create customers
for(int i = 0; i < N_CUSTOMERS; i++)
if(!fork())
customer(i);
// be employee
employee();
// end
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
输出是(使用编译gcc -Wall -pthread store.c -o store):
工作工作工作工作工作工作工作工作工作工作工作工作
我希望printf只能由父进程执行一次,但是,似乎为每个子进程创建了打印件。
我在这里想念什么?