欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > Linux-----进程处理(子进程创建)

Linux-----进程处理(子进程创建)

2025/2/2 18:57:10 来源:https://blog.csdn.net/m0_73633088/article/details/144743797  浏览:    关键词:Linux-----进程处理(子进程创建)

 【尚硅谷嵌入式Linux应用层开发,linux网络编程,linux进程线程,linux文件io】https://www.bilibili.com/video/BV1DJ4m1M77z?p=35&vd_source=342079de7c07f82982956aad8662b467

main函数

fork创建进程

fork()参数 

/*** @brief 创建一个子进程(相当于复制,包括内存空间)* void: 不需要填写参数*  * @return pid_t pid_t(int值) *  (1) 在父进程中 返回子进程的PID*  (2) 在子进程中 返回0*  (3) 发生错误 返回-1*/
pid_t fork(void);

getpid()   获取进程PID 

#include <sys/types.h>
#include <unistd.h>/*** @brief 返回调用进程的PID* * @return pid_t 不会失败,必然返回进程PID*/
pid_t getpid(void);

 getppid()   获取父进程PID

#include <sys/types.h>
#include <unistd.h>/*** @brief 返回调用进程父进程的PID* * @return pid_t 不会失败,必然返回父进程PID,即PPID*/
pid_t getppid(void);

代码案例

getpid()查看进程号

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>int main(void) {//调用fork之前代码都是在父进进行的printf("君不见黄河之水天上来,奔流到海不复回_%d\n",getpid());// 使用fork创建子进程while (1){/* code */}return 0;
}

fork()创建子进程

fork() 之后的代码都是在父子进程中各自执行一次的

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>int main(void) {//调用fork之前代码都是在父进进行的printf("父进程PID:%d\n", getpid());// 使用fork创建子进程/* 不需要传参return int 进程号(1) -1出错(2) 父进程中表示子进程PID(3) 子进程中显示0*/// fork() 之后的代码都是在父子进程中各自执行一次的pid_t pid = fork();printf("子进程PID:%d\n", pid);while (1){/* code */}return 0;
}

条件判断使得父子进程执行各自对应的代码

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>int main(void) {//调用fork之前代码都是在父进进行的printf("父进程PID:%d\n", getpid());// 使用fork创建子进程/* 不需要传参return int 进程号(1) -1出错(2) 父进程中表示子进程PID(3) 子进程中显示0*/// fork() 之后的代码都是在父子进程中各自执行一次的pid_t pid = fork();// printf("子进程PID:%d\n", pid);if (pid < 0) {perror("getpid");}else if (pid==0){printf("子进程:新的子进程:%d, 其父进程:%d\n", getpid(), getppid());}else {printf("父进程: 父进程%d,创建了进程%d\n", getpid(), pid);}while (1){/* code */}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com