📄 linhex.c
字号:
#include <stdlib.h>#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <string.h>#include <sys/stat.h>#include <sys/mman.h>const int BUFSIZE = 1024;//#define CHECKintmain(int argc, char *argv[]) { int fd, i, j, len = 0, level; struct stat info; void *area; if (argc < 2) { printf("please enter at least a argument!\n"); exit(1); }#ifdef CHECK for (i = 0; i <= argc; ++i) printf("[%i]%s\n", i, argv[i]);#endif level = 1; for (i = 0; i < argc; ++i) { if (!strncmp(argv[i], "-n", 2)) { level = atoi(argv[i + 1]); for (j = i; j < argc - i + 2; ++j) { argv[j] = argv[j + 2]; } argc -= 2; break; } }#ifdef CHECK for (i = 0; i <= argc; ++i) printf("[%i]%s\n", i, argv[i]);#endif for (i = 1; i < argc; ++i) { fd = open(argv[i], O_RDWR); printf("file %s has been opened!\n", argv[i]); fstat(fd, &info); len = info.st_size; printf("the length of file %s is %i bytes!\n", argv[i], len); if (len != 0) { area = mmap(0, len, PROT_WRITE, MAP_SHARED, fd, 0); if (area == MAP_FAILED) { perror("mmap"); exit(1); } for (j = 0; j < level; ++j) { memset(area, 0x00, len); msync(area, len, MS_SYNC); printf("file %s has zeroed %i times!\n", argv[i], j + 1); } munmap(area, len); close(fd); printf("file %s has been closed!\n", argv[i]); } else { close(fd); } rename(argv[i], "./abcde"); sync(); printf("file %s has been renamed!\n", argv[i]); unlink("./abcde"); printf("file %s has been deleted!\n", argv[i]); } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -