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

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

time

time 是 Unix 系统中的系统调用,用于获取当前时间(秒数,从 1970 年 1 月 1 日起)。C 语言中通过 time_t time(time_t *t) 获取,常用于时间戳记录或计时。

#include <time.h>
time_t now = time(NULL); // 获取当前时间

进程

进程是程序的执行实例,拥有独立的内存空间和资源。C 语言中可通过 fork() 创建子进程,或 exec 系列函数加载新程序。进程由内核调度,每个进程有唯一的 PID。

#include <unistd.h>
pid_t pid = getpid(); // 获取当前进程 PID

fork

fork() 是创建子进程的系统调用,调用一次返回两次:父进程返回子进程 PID,子进程返回 0。父子进程代码相同,但内存独立。

#include <unistd.h>
pid_t pid = fork();
if (pid == 0) {// 子进程代码
} else {// 父进程代码
}

作业: 

1.创建一个父子进程,父进程拷贝文件的前一部分,子进程拷贝文件的后一部分

#include <myhead.h>int main(int argc, const char *argv[])
{FILE *fp1=NULL,*fp2=NULL,*fp3=NULL;char buf[1024]="";fp1=fopen("./myfile","r");if(fp1==NULL)ERROR_MSG("fopen error");if(fseek(fp1,0,SEEK_END)!=0)ERROR_MSG("fseek error");int size=ftell(fp1);if(size==-1)ERROR_MSG("ftell error");if(fclose(fp1)==-1)ERROR_MSG("fclose error");pid_t pid=fork();if(pid>0){fp1=fopen("./myfile","r");if(fp1==NULL)ERROR_MSG("fopen error");fp2=fopen("./myfile1","w");if(fp2==NULL)ERROR_MSG("fopen error");for(int i=0;i<size/2+1;i++){char c=fgetc(fp1);fputc(c,fp2);}if(fclose(fp1)==-1)ERROR_MSG("fclose error");if(fclose(fp2)==-1)ERROR_MSG("fclose error");}else if(pid==0){fp1=fopen("./myfile","r");if(fp1==NULL)ERROR_MSG("fopen error");fp3=fopen("./myfile2","w");if(fp3==NULL)ERROR_MSG("fopen error");fseek(fp1,size/2+2,SEEK_SET);for(int i=0;i<size/2-1;i++){char c=fgetc(fp1);fputc(c,fp3);}if(fclose(fp1)==-1)ERROR_MSG("fclose error");if(fclose(fp3)==-1)ERROR_MSG("fclose error");}elseERROR_MSG("fork error");return 0;
}

运行结果:

2.牛客网

 

http://www.xdnf.cn/news/16945.html

相关文章:

  • 【五大联赛】 2025-2026赛季基本信息
  • android TextView lineHeight 是什么 ?
  • Android GPU测试
  • 免费MCP: JSON 转 Excel MCP
  • kubernetes基础知识
  • 数据分析—numpy库
  • 【AI云原生】1、Function Calling:大模型幻觉破解与Agent底层架构全指南(附Go+Python实战代码)》
  • Spring Batch的2种STEP定义方式
  • 数组和指针的关系
  • 从0搭建YOLO目标检测系统:实战项目+完整流程+界面开发(附源码)
  • 疯狂星期四文案网第28天运营日记
  • zookeeper持久化和恢复原理
  • 锻造企业级数字基座 - 从生死线到增长引擎的全景蓝图
  • 【设计模式】5.代理模式
  • VUE2 学习笔记16 插槽、Vuex
  • Python特性工厂函数详解:优雅管理属性验证
  • 昇思学习营-开发版-模型开发与适配
  • 【鸿蒙高级】
  • AI Competitor Intelligence Agent Team
  • 36. 有一个高 100%的 div,里面有一个高 100px 的 div,剩下一个自动填满
  • HiveMQ核心架构思维导图2024.9(Community Edition)
  • VBA 64位API声明语句第012讲
  • 实现游戏排行榜
  • Spring Boot 的事务注解 @Transactional 失效的几种情况
  • 从马武寨穿越关山
  • K8S部署ELK(五):集成Kibana实现日志可视化
  • [硬件电路-144]:模拟电路 - 开关电源与线性稳压电源常见的性能指标对比
  • Android设备认证体系深度解析:GMS/CTS/GTS/VTS/STS核心差异与认证逻辑
  • 【连接器专题】连接器做为固定连接介质的三种分类
  • 问题集000