当前位置: 首页 > news >正文

嵌入式开发学习———Linux环境下IO进程线程学习(四)

进程相关函数

fork

创建一个子进程,子进程复制父进程的地址空间。父进程返回子进程PID,子进程返回0。

pid_t pid = fork();
if (pid == 0) { /* 子进程代码 */ }
else { /* 父进程代码 */ }

getpid

获取当前进程的PID。

pid_t pid = getpid();

getppid

获取父进程的PID。

pid_t ppid = getppid();

wait

阻塞等待任意子进程结束,返回终止子进程的PID。

int status;
pid_t child_pid = wait(&status);

waitpid

等待指定子进程结束,可设置非阻塞选项。

int status;
pid_t child_pid = waitpid(pid, &status, WNOHANG);

exit

正常终止进程,清理I/O缓冲区。

exit(0);  // 0表示成功

_exit

立即终止进程,不清理缓冲区。

_exit(1);  // 1表示失败

作业:

1.创建一个进程扇

子1    子2    子3......

#include <myhead.h>int main(int argc, const char *argv[])
{pid_t pid1,pid2,pid3;if((pid1=fork())==0){//sleep(1);puts("这是子进程1!");}else if(pid1>0){if((pid2=fork())==0){//sleep(2);puts("这是子进程2!");}else if(pid2>0){if((pid3=fork())==0){//sleep(3);puts("这是子进程3!");}else if(pid3>0){puts("这是父进程!");//waitpid(pid3,NULL,0);}elseERROR_MSG("pid3=fork error");}elseERROR_MSG("pid2=fork error");}elseERROR_MSG("pid1=fork error");while(1);return 0;
}

运行结果:



2.创建一个进程链
父 ----  子 ----  孙  ---- 曾孙

#include <myhead.h>int main(int argc, const char *argv[])
{pid_t pid1,pid2,pid3;if((pid1=fork())==0){if((pid2=fork())==0){if((pid3=fork())==0){puts("这是曾孙进程!");}else if(pid3>0){puts("这是孙子进程!");}elseERROR_MSG("pid3=fork error");}else if(pid2>0){puts("这是子进程!");}elseERROR_MSG("pid2=fork error");}else if(pid1>0){puts("这是父进程!");waitpid(pid3,NULL,0);}elseERROR_MSG("pid1=fork error");while(1);return 0;
}

运行结果:

3.牛客网

http://www.dtcms.com/a/316869.html

相关文章:

  • 《嵌入式数据结构笔记(三):数据结构基础与双向链表》
  • 应急响应排查思路
  • MLIR Bufferization
  • JWT 签名验证失败:Java 与 PHP 互操作问题解决方案
  • OpenHarmony 5.0 Settings中wifi删除密码立刻去输入密码连接,连接不上
  • 性能测试终极指南:从指标到实战
  • 自动驾驶中的传感器技术24——Camera(15)
  • Mybatis的应用及部分特性
  • 机器学习——集成学习(Ensemble Learning):随机森林(Random Forest),AdaBoost、Gradient Boosting,Stacking
  • 企业级Redis Cluster部署详解及演练
  • 森赛睿科技成为机器视觉产业联盟会员单位
  • 解决cv::dilate处理后的图像边缘像素出现异常值的问题
  • 结构化设计工具与技术详解
  • Spring 的优势
  • 内部排序算法总结(考研向)
  • 从递归到动态规划-解码方法Ⅱ
  • 软件测试面试如何避坑呢?
  • 8.5 各种攻击实验
  • 使用 BAML 模糊解析改进 LangChain 知识图谱提取:成功率从25%提升到99%
  • 无人机陀螺仪模块技术解析
  • SQL的LEFT JOIN优化
  • 【C语言】动态内存管理详解
  • Centos7 、9 、OpenEuler 22、24对比
  • TCP协议与UDP协议
  • 十六、请求响应-响应:三层架构-分层解耦
  • 信息安全的概述
  • RabbitMQ延时队列的两种实现方式
  • C++算法竞赛篇(九)字符数组题型讲解
  • 坚鹏:AI智能体软件是知行学成为AI智能体创新应用引领者的抓手
  • uvm-register-backdoor-access