目录
回顾
1 main 函数也是进程 shell 命令行也是
2 父进程 会从 main函数 执行到 fork 函数 停止
3 父进程调用 fork 函数 会克隆出 子进程
4 main shell 父子进程 会发生抢占资源
继续往下 学
一 进程数据共享
如果定义 一个全局变量 父子进程对变量的操作 会不会相互影响。
他们之间 内存不能共享 ???
父进程调用 frok 之后 会克隆出子进程 并且会拷贝出单独的空间 个子进程操作
1 验证 进程数据共享 结果
1 子进程先加加 父进程不加 打印 a的值
看看数据是不是共享的 也就是子进程对a操作了 父进程也能打印相应的值
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
int a=100;
int main()
{
pid_t a;
a=fork();
if(a>0)
{
printf("!!!!!!A=%d\n",a);
printf("father pid is %d\n",getpid());
}
else if(a==0)
{
a-=50;
printf("*****a=%d\n",a);
printf("child pid is %d ppid is %d \n",getpid(),getppid());
}
return 0;
}
并没有相同 父进程直接打印初始化值了
1 如果是 父进程 -- 子进程 ++ 呢
会不会影响
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
int a=100;
int main()
{
pid_t a;
a=fork();
if(a>0)
{
a-=50;
printf("!!!A=%d\n",a);
printf("father pid is %d\n",getpid());
}
else if(a==0)
{
a+=50;
printf("*****a=%d\n",a);
printf("child pid is %d ppid is %d \n",getpid(),getppid());
}
return 0;
}
互不影响 并且不共享 只能单独拷贝单独操作。