当前位置: 首页 > 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.lryc.cn/news/610766.html

相关文章:

  • Python爬虫09_Requests用bs4进行数据解析
  • selenium自动化收集资料
  • linux服务器上word转pdf后乱码问题
  • In-memory不要全加载怎么做?
  • 基于LDA主题的网络舆情与情感分析——以云南某景区话题为例
  • 本机部署K8S集群
  • 基于k8s环境下的pulsar常用命令(上)
  • mq_open系统调用及示例
  • ubutnu20.04更新源报错:E:...签名不再生效
  • C语言学习笔记——动态内存分配
  • 备忘录记事本 任务清单 html
  • 手动开发一个TCP服务器调试工具(一):基础知识与核心类接口
  • HTML 如何转 Markdown
  • 【qt5_study】2.使用Qt Designer构造UI界面(信号与槽)
  • 16核32G硬件服务器租用需要多少钱
  • 工业级 CAN 与以太网桥梁:串口服务器CAN通讯转换器深度解析(下)
  • 前端实用工具方法 —— 持续更新中...
  • GPT-5的诞生之痛:AI帝国的现实危机
  • 前端权限设计
  • 云手机的主要功能都包含哪些?
  • MoonBit 月兔 - 云和边缘计算 AI云原生编程语言及开发平台
  • LangChain入门:代理、链、索引
  • WIN QT libsndfile库编译及使用
  • 【教程】Unity AssetBundle 资源管理方法
  • STM32F407VET6学习笔记10:移植smallmodbus
  • 【LeetCode 热题 100】347. 前 K 个高频元素——(解法一)排序截取
  • Redis类型之String
  • 【npm 解决】---- TypeError: crypto.hash is not a function
  • GPS信号捕获尝试
  • 【机器学习深度学习】模型剪枝