gpt4 book ai didi

谁能解释这个输出(操作系统)?

转载 作者:太空宇宙 更新时间:2023-11-04 01:41:56 26 4
gpt4 key购买 nike

当我在学习操作系统类(class)时,我不明白为什么下面代码的输出是这样的

代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

int main (int argc, const char * argv[]) {

int value = 5;


pid_t pid = fork();
printf("pid = %d \n",pid);
if (pid == 0){
value+=15;
printf("Value ch :%d \n",value);
}
else {
if (pid > 0) {
wait(NULL);
printf("Value pr :%d \n",value);
exit(1);
}

}

return 0;
}

输出:

run
[Switching to process 24752]
Running…
pid = 24756
pid = 0
Value ch :20
Value pr :5

如果从 child 值 = 返回到 5 后 child 中的值变为 20 为什么

最佳答案

因为 fork() 创建了一个新进程,它有自己的地址空间。该地址空间填充了原始地址空间内容的副本。因此,在一个过程中所做的更改不会影响另一个过程。

换句话说,这是因为进程不共享内存(除非您使用 mmap() 等明确强制它们共享)。

关于谁能解释这个输出(操作系统)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4226504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com