进程的创建:
pid_t fork(void);系统调用。
fork在父进程中返回子进程的PID,子进程中返回0
fork()函数出错返回-1,fork函数调用一次,返回俩次。(俩个进程中分别返回一词)。
在原来的进程返回新进程的pid(不可能等于0),在新进程中返回0。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
int main()
{
printf("this is a fork\n");
pid_t n = 0;
n = fork();
assert(n!=-1);
if(n==0)
printf("Hello,%d\n",getpid());
else
printf("World,%d\n",getpid());
printf("this will end\n");
exit(0);
}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
int main()
{
int i=0;
for(;i<2;++i)
{
if(fork()==0)
{
printf("A\n");
}
else
{
printf("B\n");
}
}
exit(0);
}
缓冲区中没有被打印出来效果:进程赋值,缓冲区内的数据也被拷贝到了子进程中。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
int main()
{
int i=0;
for(;i<2;++i)
{
if(fork()==0)
{
printf("A");
}
else
{
printf("B");
}
}
exit(0);
}
fork()&&fork()结果::::::
进程和其子进程全局变量和局部变量地址一样,值不随着子进程的改变而改变。。。。