// 、、使用内存映射可以拷贝文件
/*
对原始文件进行内存映射
创建一个新文件
把新文件的数据拷贝映射到内存中
通过内存拷贝将第一个文件的内存映射区拷贝到第二个文件的内存映射区
释放资源
*/// 匿名映射,不需要文件实体来进行内存映射
// 只能用于有血缘关系的进程间通信
#include <sys/mman.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main()
{/*
// kill函数
// pid》0将信号发送给指定进程
// =0:将信号发送给当前进程组
// =-1:将信号发送给每一个有权限接受这个信号的进程
// 《-1:进程组id的绝对值
// sig,要发送的信号
// kill(getppid(), 9);
// kill(getpid(), 9);
// raise函数,给当前进程发送信号
// sig,要发送的信号,成功返回0,失败返回非0*/
// alarm函数
// 设置定时器,倒计时,当时间为0的时候,会给当前进程发送一个 SIGALARM信号
// 取消定时器,alarm(0)即可
// 返回值是unsigned int,倒计时剩余的时间(上一个alarm剩余的时间)
// SIGALRARM信号默认终止当前进程,每个进程只能设置一个定时器
// int seconds = alarm(5);
// printf("%d\n", seconds);
//  sleep(2);
//  seconds = alarm(3);
// printf("%d\n", seconds);
// while(1){// }
// 1秒钟电脑能输多少个数?
//无论进程处于什么状态,alarm都会正常计时
// 实际时间=内核时间+用户时间+io消耗的时间
// alarm(1);
// int i =0;
// while(1){//     printf("%d\n",i++);
// }// settimeer函数,用于替换alarm函数,且精度比alarm要高很多,
// 参数
// which,定时器以什么时间计时
//     ITIME_REAL: 真实时间,时间到达,就发送SIGALRM
//     ITIME_VIRTUAL;用户时间,时间到达就发送SIGVTALRM
//     ITIMER_PROF:进程在内核状态下消耗的时间
// 过3秒后,每两秒执行一次
struct itimerval new_value;
// 设置值
new_value.it_interval.tv_sec = 2;
new_value.it_interval.tv_usec =0;
new_value.it_value.tv_sec=3;
new_value.it_value.tv_usec=0;
int ret = setitimer(ITIMER_REAL,&new_value,NULL);
printf("定时器开始\n");
if (ret==-1){perror("settimer");exit(0);
}
getchar();
// pid_t pid = fork();
// if(pid==0){//     for(int i=0;i<5;i++) {//         printf("孩子进程%d\n", i);
//         sleep(1);
//     }
// }else if(pid>0) {//   printf("爹进程\n");
//   sleep(2);
//   printf("傻儿子\n");
//   kill(pid,SIGINT);
// }
return 0;}
/*// char * buf;// strcpy(buf, "cao nima");return 0;}/*// 修改mmap的flags参数,之前使用的是MAP_SHARED// 现在我们要用的是MAP_ANONint len = 1204;void *ptr = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_ANON | MAP_SHARED, -1, 0);if (ptr == MAP_FAILED){perror("mmap");exit(0);}// 父子进程间通信int pid = fork();if (pid > 0){strcpy((char *)ptr, "hello world");wait(NULL);}else if (0 == pid){sleep(1);printf("%s\n", (char *)ptr);}// 释放内存映射区int ret = munmap(ptr, len);// int fd = open("englsih.txt", O_RDONLY);// // 获取原始文件的大小// int len = lseek(fd, 0, SEEK_END);// // 创建一个新文件,并对其大小进行拓展// int fd1 = open("cpy.txt", O_CREAT | O_RDWR, 0664);// truncate("cpy.txt", len);// write(fd1, " ", 1);// // 分别进行内存映射// void *ptr = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0);// void *ptr1 = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fd1, 0);// if (ptr == MAP_FAILED)// {//     perror("mmap");//     exit(0);// }// if (ptr1 == MAP_FAILED)// {//     perror("mmap");//     exit(0);// }// // 内存拷贝// memcpy(ptr1, ptr, len);// munmap(ptr1, len);// munmap(ptr, len);// close(fd1);// close(fd);return 0;
}
*/

C语言 setitimer函数相关推荐

  1. 写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?

    但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main函数. 那么main函数一共有多少个版本呢? 1.ma ...

  2. R语言str_trim函数去除字符串中头部和尾部的空格

    R语言str_trim函数去除字符串中头部和尾部的空格 目录 R语言str_trim函数去除字符串中头部和尾部的空格 #导入包和库 #仿

  3. R语言sqrt函数为数值开平方根实战

    R语言sqrt函数为数值开平方根实战 目录 R语言sqrt函数为数值开平方根实战 #基本语法 #sqrt函数开平方根

  4. R语言数学函数:abs绝对值、sqrt平方根、ceiling向上近似整数、floor向下近似整数、trunc去除小数部分、round近似到指定小数位、signif近似到有效数字、三角函数、指数、对数

    R语言数学函数:abs绝对值.sqrt平方根.ceiling向上近似整数.floor向下近似整数.trunc去除小数部分.round近似到指定小数位.signif近似到有效数字.三角函数.指数.对数 ...

  5. R语言sd函数计算数值标准差实战(Standard Deviation)

    R语言sd函数计算数值标准差实战(Standard Deviation) 目录 R语言sd函数计算数值标准差实战(Standard Deviation) #基本语法 #sd

  6. R语言optimize函数一维优化实战

    R语言optimize函数一维优化实战 目录 R语言optimize函数一维优化实战 #基础语法 #优化用户自定义的函数

  7. R语言rev函数对数据对象(向量、dataframe通过行或者列)反序实战

    R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战 目录 R语言rev函数对数据对象(向量.dataframe通过行或者列)反序实战

  8. R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数

    R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...

  9. R语言merge函数全连接dataframe数据(Full (outer) join)、merge函数进行全连接必须将参数all设置为true(all=TRUE)、默认merge函数通过公共列名合并数

    R语言merge函数全连接dataframe数据(Full (outer) join).merge函数进行全连接必须将参数all设置为true(all=TRUE).默认merge函数通过公共列名合并数 ...

最新文章

  1. python发送文件给微信好友_Python定时自动给微信好友发送天气预报
  2. VSC++ 常量中出现符号
  3. java 切换主线程_Java线程状态及切换、关闭线程的正确姿势分享
  4. Web开发者必备:Web应用检查清单
  5. JUnit编写单元测试代码注意点小结
  6. Android--UI布局
  7. PHP数组的访问方法有几种,PHP数组的几种遍历方法
  8. 社会我张哥,人狠话不多。
  9. Git基础之(十五)——分支管理——分支管理策略
  10. 现场取证之流量分析总结
  11. 键盘符号中英文对照表
  12. 影响力最大化概述——《社会网络节点影响力分析研究》内容简述
  13. IPv4头部结构具体解释
  14. 机器人被挠脚心_《fm及机器人系列(tk)》专题
  15. 新神魔大陆服务器维护,《新神魔大陆》手游8月20日合服维护公告
  16. 地鼠宝宝的轶事奇闻之并发初探
  17. FastDB 高效率的内存数据库系统
  18. TPS和事务响应时间的关系、计算公式(转载)
  19. 数据结构之971: 统计利用先序遍历创建的二叉树的深度
  20. d3力导向图增加节点_d3.js力导向图节点如何都显示在边框内

热门文章

  1. 圣诞节送朋友哪款蓝牙耳机好?高颜值蓝牙耳机推荐
  2. Linux 运维必备的 13 款实用工具,拿好了
  3. access随系统启动的宏_Access 中启动带宏的excel
  4. 论文阅读 Jointly Optimize Data Augmentation and Network Training
  5. c语言中doubt和double,doubt的用法
  6. Word基础(三十四)引文与书目
  7. 高德地图使用(一)---添加自定义标注和标注事件
  8. CSP 2022 游寄
  9. css3简单实现页面中出现雪花飘落效果
  10. Excel如何批量删除空白表