/* 3-2 创建一个具有空洞的文件 */
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h> /* S_IRUSR,etc.*/
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
int main(void)
{
char buf1[] = "abcdefghij";
char buf2[] = "ABCDEFGHIJ";
int fd;
if( (fd = open("file.hole", O_WRONLY | O_CREAT | O_TRUNC, 0644)) == -1 )
{
perror("open error");
exit(1);
}
if(write(fd, buf1, 10) != 10)
{
perror("buf1 write error");
exit(1);
}/* offset = 10 */
if(lseek(fd, 16384, SEEK_SET) == -1)
{
perror("lseek error");
exit(1);
}/* offset = 16384 */
if(write(fd, buf2, 10) != 10)
{
perror("buf2 write error");
exit(1);
}/* offset = 16394 */
return 0;
}
/* test
[duyiwuer@localhost test]$ ls
apue-3.2.c ffff file.hole
[duyiwuer@localhost test]$ ls -l file.hole
-rw-r--r-- 1 duyiwuer duyiwuer 16394 Nov 8 17:09 file.hole
[duyiwuer@localhost test]$ od -c file.hole
0000000 a b c d e f g h i j \0 \0 \0 \0 \0 \0
0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
0040000 A B C D E F G H I J
0040012
*/
APUE-3.2 创建一个具有空洞的文件
最新推荐文章于 2022-05-09 19:21:02 发布