进程的创建:
pid_t fork(void);系统调用函数
fork出错 返回-1,fork函数调用一次,返回两次
在原来的进程返回新进程pid(不可能为0),在新进程中返回0;
即在父进程执行非0,在子进程执行0
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
int main()
{
pid_t n=fork();
assert(n !=-1)
if(n==0)
{
printf("world:\n");
}
else
{
printf("hello:\n");
}
exit(0);
}
由于fork()之后生成子进程,父进程执行非零则运行结果为hello,子进程返回0运行结果为world;
新进程继承原来的数据,新进程从fork()之后开始运行
fork()之后,父子进程是两个独立的进程,谁先运行由操作系统决定。
父子进程运行数值相同而地址不同是因为此地址是虚拟而不是真实存在的物理地址