我对这个小程序有问题:
int main() {
pid_t process;
int count= 0;
switch(process= fork()) {
case -1:
printf("Fork error!\n\n");
exit(1);
break;
case 0: //child
printf("Process CHILD: PID= %d, Value= %d \n", getpid(), process);
printf("Coounter NOT increased: %d\n", count);
printf("Increase counter...\n");
sleep(2);
count= count + 2;
printf("Counter increased: %d\n\n", count);
exit(0);
break;
default: //parent
wait(0);
printf("Process PARENT: PID= %d, Value= %d\n", getpid(), process);
printf("Counter value: %d\n\n", count);
break;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我增加了孩子的柜台,但在父母的柜台不增加......为什么?
谢谢大家
因为父进程和子进程不在同一个进程中运行。
每个进程中变量使用的内存都不同。顺便说一下,这就是流程的要点。
如果您确实想对进程执行此操作,请查看“共享内存”;如果您只想在单个进程的内存中进行多处理,请查看“共享内存”。