返回顶部

收藏

linux c 之进程

更多

进程创建

#include <unistd.h>

pid_t fork(void);

pid_t vfork(void);

                                在这简述,fork创建的子进程是父进程的一个拷贝,但是和父进程使用不同的数据段和堆栈。vfork和fork基本相同但是vfork不会复制父进程的数据段,它们共享数据段。这是因为vfork常和exec函数使用去调用一个程序如ls命令,开启一个新的进程。vfork后父进程会等待子进程运行结束或调用了exit。fork后父进程和子进程的运行顺序是不确定的。

下面是体现它们性质的程序:

#include <sys/types.h>

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

main()

{

     pid_tpid;

     char*pchar = "before fork";

     inttest_va = 1;

     if((pid= fork()) < 0 )

     {

     printf("forkerror!!\n");

     exit(1);

     }

     elseif(pid == 0)

     {

     printf("childprocess\n");

     pchar= "child pchr\n";

     printf("%s\n",pchar);

     test_va= 2;

     printf("%d\n",test_va);

     _exit(2);

     }

     else

     {

     printf("parentprocess\n");

     //sleep(1);

     printf("%s\n",pchar);

     printf("%d\n",test_va);

     }

}

标签:进程,linux,c

收藏

0人收藏

支持

0

反对

0