C语言 alarm函数
// 、、使用内存映射可以拷贝文件
/*
对原始文件进行内存映射
创建一个新文件
把新文件的数据拷贝映射到内存中
通过内存拷贝将第一个文件的内存映射区拷贝到第二个文件的内存映射区
释放资源
*/// 匿名映射,不需要文件实体来进行内存映射
// 只能用于有血缘关系的进程间通信
#include <sys/mman.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.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++);
}
// 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语言 alarm函数相关推荐
- linux c语言sleep函数的头文件,C语言中的pause()函数和alarm()函数以及sleep()函数
C语言pause()函数:让进程暂停直到信号出现头文件: #include 定义函数: int pause(void); 函数说明:pause()会令目前的进程暂停(进入睡眠状态), 直到被信号(si ...
- c语言中的pause,C语言中的pause()函数和alarm()函数以及sleep()函数
C语言pause()函数:让进程暂停直到信号出现头文件: #include 定义函数: int pause(void); 函数说明:pause()会令目前的进程暂停(进入睡眠状态),直到被信号(sig ...
- c语言pause()函数(让进程暂停直到信号出现)
C语言pause()函数:让进程暂停直到信号出现 头文件: #include <unistd.h> 定义函数: int pause(void); 函数说明:pause()会令目前的进程暂停 ...
- 写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?
但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main函数. 那么main函数一共有多少个版本呢? 1.ma ...
- R语言str_trim函数去除字符串中头部和尾部的空格
R语言str_trim函数去除字符串中头部和尾部的空格 目录 R语言str_trim函数去除字符串中头部和尾部的空格 #导入包和库 #仿
- R语言sqrt函数为数值开平方根实战
R语言sqrt函数为数值开平方根实战 目录 R语言sqrt函数为数值开平方根实战 #基本语法 #sqrt函数开平方根
- R语言数学函数:abs绝对值、sqrt平方根、ceiling向上近似整数、floor向下近似整数、trunc去除小数部分、round近似到指定小数位、signif近似到有效数字、三角函数、指数、对数
R语言数学函数:abs绝对值.sqrt平方根.ceiling向上近似整数.floor向下近似整数.trunc去除小数部分.round近似到指定小数位.signif近似到有效数字.三角函数.指数.对数 ...
- R语言sd函数计算数值标准差实战(Standard Deviation)
R语言sd函数计算数值标准差实战(Standard Deviation) 目录 R语言sd函数计算数值标准差实战(Standard Deviation) #基本语法 #sd
- R语言optimize函数一维优化实战
R语言optimize函数一维优化实战 目录 R语言optimize函数一维优化实战 #基础语法 #优化用户自定义的函数
最新文章
- 汽车车灯灯具系统(下)
- netty集成ssl完整参考指南(含完整源码)
- 300亿美元,AMD为什么要买Xilinx?
- 【上】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS
- python 任务调度 celery_python任务调度模块celery(二)
- Bash、Terminal通过tab忽略大小写自动补全命令行提示
- javascript在使用时要注意的东西
- spring cloud config 加密配置
- 在图形用户登录界面输入正确用户名与密码后,闪了一下(即将要登录进去那一刹那),它NND给我蹦出来了!
- waterfall model
- Heading/Pitch/Roll与Omega/Phi/Kappa简单介绍
- Android HTTP网络详解
- 【技术邻】基于Ansys Icepak的散热器优化
- 2021年起重机司机(限桥式起重机)复审考试及起重机司机(限桥式起重机)证考试
- send/sendto和recv/recvfrom各自的区别
- 梳理 | 机器人学习(Robot Learning)的发展
- 六顶思考帽(edward de bono)
- 图片批量压缩方法及步骤
- 程序员正确看代码的方式
- 计算机事件查看u盘使用情况,关于U盘使用记录的日志文件