⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linhex.c

📁 能够在linux下指定的文件进行内容写零再删除
💻 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 + -