#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#define NUM 0x10
char* chunks[NUM];
unsigned long cookie;
#define SIZE 0x100
void init_io(){
setvbuf(stdin, 0, 2, 0);
setvbuf(stdout, 0, 2, 0);
setvbuf(stderr, 0, 2, 0);
int fd = open("/dev/urandom", 0);
if(fd == -1){
exit(-1);
}
read(fd, &cookie, 8);
close(fd);
}
unsigned long get_int(){
unsigned long res;
scanf("%ld", &res);
return res;
}
void allocate(){
unsigned long idx;
printf("Index: ");
idx = get_int();
if(idx >= NUM){
return ;
}
char* buf = malloc(SIZE);
if(buf == NULL){
puts("allocate failed");
return;
}
chunks[idx] = buf;
unsigned long* p = chunks[idx] + SIZE - 8;
*p = cookie;
puts("Done!");
}
void delete(){
unsigned long idx;
printf("Index: ");
idx = get_int();
if(idx >= NUM || chunks[idx] == NULL){
return ;
}
unsigned long* p = chunks[idx] + SIZE - 8;
if(*p != cookie) return;
*p = 0;
free(chunks[idx]);
}
void show(){
unsigned long idx;
printf("Index: ");
idx = get_int();
if(idx >= NUM || chunks[idx] == NULL){
return ;
}
unsigned long* p = chunks[idx] + SIZE - 8;
if(*p != cookie) return;
write(1, "Content: ", strlen("Content: "));
write(1, chunks[idx], SIZE - 8);
write(1, "\n", 1);
}
void edit(){
unsigned long idx;
printf("Index: ");
idx = get_int();
if(idx >= NUM || chunks[idx] == NULL){
return ;
}
unsigned long* p = chunks[idx] + SIZE - 8;
if(*p != cookie) return;
printf("Content: ");
read(0, chunks[idx], SIZE);
}
void menu(){
puts("1. allocate");
puts("2. edit");
puts("3. show");
puts("4. delete");
puts("5. exit");
printf("Your choice: ");
}
int main(){
init_io();
puts("Made on Ubuntu 18.04");
while(1){
menu();
unsigned long choice = get_int();
switch(choice){
case 1:
allocate();
break;
case 2:
edit();
break;
case 3:
show();
break;
case 4:
delete();
break;
case 5:
exit(0);
break;
default:
puts("Unknown");
break;
}
}
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
753163e1-3061-4268-9b8f-f16e19e718b9.zip (2个子文件)
attachment
of.c 2KB
libc-2.27.so 1.94MB
共 2 条
- 1
资源评论
落屿102
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Scaled-YOLOv4训练自己的数据集详细教程PDF,关于论文阅读请联系小编获取PDF文档.zip
- Scaled-YOLOv4 的 Tensorflow2.x 实现,如 Scaled-YOLOv4扩展跨阶段部分网络中所述.zip
- python动态化爱心图源代码
- RK3588 版 YOLOv5.zip
- RK3566,68,88 的 YoloV5 NPU.zip
- 计算机行业教育新基建跟踪-华西证券-12页.pdf
- 路面水坑,路面坑洼检测,有YOLOV7标记 5000+标记图片
- QT+NCNN 小米手机运行 YOLOv8s.zip
- adafasfww dddsa
- Pytorch 轻松重新实现“YOLOX2021 年超越 YOLO 系列”.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功