首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

chapter 三 - file hole 文件的黑洞

2012-08-29 
chapter 3 -- file hole 文件的黑洞apue 里介绍了文洞(英文是hole,中文不知道怎么说,我理解为“文件的黑洞”

chapter 3 -- file hole 文件的黑洞

apue 里介绍了文洞(英文是hole,中文不知道怎么说,我理解为“文件的黑洞”,感觉它挺神秘的,像黑洞一样……),所以做了一个程序来产生一个有黑洞的文件,一个没有黑洞的文件。用法是?

a.out filename1 filename2,filename1?

代表有黑洞的文件名,filename2 代表没黑洞的文件名。注意设计程序的时候这个“黑洞”一定要给得足够大,否则看不见……

所以我的 DELTA 设置为 1000 了,一开始设置为 100,结果 ls -asl ?的时候两个文件竟然是一模一样的……

#include <stdio.h>//#include <unistd.h>#include "apue.h"#include "myerr.c"//#include <pwd.h>#include <fcntl.h>#define BUFSIZE11#define DELTA1000intmain (int argc, char *argv[]){int i, fd;charbuf[BUFSIZE] = {"abcdefghij"} ;if (argc != 3)err_quit ("usage: a.out filename1 filename2\n") ;// write a holed fileif ((fd = open (argv[1], O_CREAT | O_RDWR, S_IRWXU | S_IRWXG | S_IRWXO)) == -1)err_sys ("holed file open error") ;//printf ("%d\n", fd) ;if (write (fd, buf, 10) != 10)err_sys ("holed file 1 write error") ;if (lseek (fd, 10 * DELTA, SEEK_SET) == -1)err_sys ("holed file lseek error") ;if (write (fd, buf, 10) != 10)err_sys ("holed file 2 write error") ;close (fd) ;// write a no hole fileif ((fd = open (argv[2], O_CREAT | O_RDWR, S_IRWXU | S_IRWXG | S_IRWXO)) == -1)err_sys ("noholed file open error") ;if (write (fd, buf, 10) != 10)err_sys ("noholed file 1 write error") ;for (i = 0 ; i < DELTA ; ++i) {if (write (fd, buf, 10) != 10)err_sys ("noholed file 2 write error") ;}close (fd) ;    exit (0) ;}
?

热点排行