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

嵌入式开发学习———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.dtcms.com/a/314477.html

相关文章:

  • DolphinScheduler 集成DataX
  • 前端VUE基础环境搭建
  • opencv引入libavif
  • typeof和instanceof区别
  • 静电干扰误报率↓85%!陌讯多模态融合算法在智慧环卫检测优化
  • python基础:数据解析BeatuifulSoup,不需要考虑前端形式的一种获取元素的方法
  • 【前端】JavaScript基础知识及基本应用
  • 【AMD】编译llama.cpp实践版
  • 管家级教程:在 Windows 上配置 WSL2、CUDA 及 VLLM,开源音频克隆项目
  • 解决 Alpine 容器中编译 confluent-kafka-go 报错的问题
  • LLaMA-Factory微调教程4:模型评估
  • Spring Boot + ShardingSphere 分库分表实战
  • 【CVPR2025】计算机视觉|AnomalyNCD:让工业异常分类“脱胎换骨”!
  • 计算机视觉(2)车规摄像头标准
  • YOLO11涨点优化:原创自研DSAM注意力!基于BiLevelRoutingAttention的颠覆性升级
  • nodejs 封装方法将打印日志输出到指定文件
  • javacc实现简单SQL解析器
  • Llama 3词汇表揭秘:128,000个token解析:merges 是子词分词算法
  • 数据结构——单向链表部分操作及valgrind安装
  • Exporters | 安装mongodb_exporter
  • 数据分页异步后台导出excel
  • 【Ubuntu】请问,`ip -a`显示的“wlo1”是什么呀?
  • 笔试——Day28
  • 如何在 Ubuntu 24.04 上安装和配置 TFTP 服务器
  • 高防服务器租用的作用都有哪些?
  • 上海交通大学联合项目论文解读 | Hume 模型:视觉 - 语言 - 动作模型中引入系统2思维
  • 单片机51 day46
  • 部署 Kibana 8.2.2 可视化管理 Elasticsearch 8.2.2 集群
  • 【测试工程思考】测试自动化基础能力建设
  • 机试备考笔记 4/31