C语言linux多进程
fork()函数
一个进程调用fork()函数创建该进程子进程,系统会为该子进程分配资源存储数据和代码的空间,父进程将数据和代码复制给子进程,子进程按父进程代码重新执行,即克隆了父进程并重新执行。
fork()函数的返回值,-1即fork失败,值为0时即子进程,返回值大于0即子进程id;
#include <stdio.h> #include <unistd.h> int main(int arg,char* argv[]){ // int 被 typedef为 pid_t pid_t pid=fork(); // 当pid==0时,是子进程代码运行区域。其他则是父进程运行区域。 if(pid<0){ printf("Create child process failed ...\n"); }else if(pid==0){ //子进程执行体 printf("Create child process successfully %i \n",getpid()); } else{ //父进程执行体 printf("This is parent process %i \n",getpid()); } // 执行体结束标志 if(pid==0) { sleep(3); printf("pid=%i child process end ... \n",getpid()); } else{ // 睡眠5s,等待子先进程结束 sleep(5); printf("pid=%i Parent process end ... \n",getpid()); } return 0; }
C_project$ gcc duojincheng1.c -o a C_project$ ./a This is parent process 4858 Create child process successfully 4859 pid=4859 child process end ... pid=4858 Parent process end ...