c/c++语言开发共享c/c++ linux 进程 fork wait函数

linux 进程 fork wait函数 fork:创建子进程 wait:父进程等待子进程结束,并销毁子进程,如果父进程不调用wait函数,子进程就会一直留在linux内核中,变成了僵尸进程。 fork函数的详细说明: “fork” wait函数详细说明参考: “wait” 例子1:不注释掉exit …


linux 进程 fork wait函数

fork:创建子进程

wait:父进程等待子进程结束,并销毁子进程,如果父进程不调用wait函数,子进程就会一直留在linux内核中,变成了僵尸进程。

fork函数的详细说明:

wait函数详细说明参考:

例子1:不注释掉exit(0)的话,子进程不会执行到printf(“end pid: %dn”, getpid());这行。

#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <wait.h>//wait function  int main(){   pid_t pid;    pid = fork();    if(pid == 0){     printf("child process : %dn", getpid());     //exit(0);   }   else{     int status;     pid_t waitpid;      printf("parent process : childpid=%d , mypid=%dn",pid, getpid());     waitpid = wait(&status);     printf("waitpid:%dn", waitpid);   }   printf("end pid: %dn", getpid());   return 0; } 

例子2:父进程和子进程之间,值是不共有的,你是你的,我是我的。

#include <stdio.h> #include <unistd.h> #include <stdlib.h>  int main(){   pid_t pid;   int i = 100;    pid = fork();    if(pid == 0){     printf("child process : %dn", getpid());     i += 500;   }   else{     printf("parent process : childpid=%d , mypid=%dn",pid, getpid());     i += 1024;   }   printf("i=%dn", i);    return 0; } 

例子3:线程之间,值是共有的。

#include <stdio.h> #include <unistd.h>//sleep function #include <pthread.h>  int global_val = 0;  void* sub_thread(void *data){   int* val = (int*)data;    printf("sub_thread : val=%dn", *val);    for(int i = 0; i < 10; ++i){     global_val++;     printf("sub_thread : i=%d, g=%dn", i, global_val);     sleep(1);   }   return null; }  int main(){   pthread_t th;   void* th_ret;   int arg = 200;      if(pthread_create(&th, null, sub_thread, (void*)&arg) != 0){     perror("pthread_create");     return 1;   }    for(int i = 0; i < 10; ++i){     global_val++;     printf("main: i=%d, g=%dn", i, global_val);     sleep(1);   }    if(pthread_join(th, &th_ret) != 0){     perror("pthread_join");     return 1;   }    return 0; } 

编译时需要加 -pthread

g++ -g process-5-thread.cpp -std=c++11 -pthread

c/c++ 学习互助qq群:877684253

c/c++ linux 进程 fork wait函数

本人微信:xiaoshitou5854

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/606880.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐