APUE-3.2创建一个具有空洞的文件

本文介绍了一个使用C语言创建带有空洞的文件的方法。通过示例代码展示了如何利用`creat`、`lseek`和`write`等系统调用创建一个包含特定数据段但中间存在空洞的文件,并给出了具体的编译及执行步骤。

创建文件Create_file_with_hole.c,内容为

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "apue.h"
char buf1[] = "abcdefghij";
char buf2[] = "ABCDEFGHIJ";
int
main(void) {
    int fd;
    if ( (fd = creat("file.hole", FILE_MODE)) < 0)
        err_sys("creat error");
    if (write(fd, buf1, 10) != 10)
        err_sys("buf1 write error");
    /* offset now = 10 */
    if (lseek(fd, 40, SEEK_SET) == -1)
        err_sys("lseek error");
    /* offset now = 40 */
    if (write(fd, buf2, 10) != 10)
        err_sys("buf2 write error");
    /* offset now = 50 */
    exit(0);
}
  • 编译
gcc Create_file_with_hole.c -o Create_file_with_hole -lapue
  • 执行
./Create_file_with_hole
//od命令用来观察该文件的实际内容,-c表示以字符方式打印文件内容
od -c file.hole

编译,执行结果为
这里写图片描述

凌云面试自查(操作系统) 1.Linux基础 1.1Linux 如何查看磁盘分区大小, 如何查看、修改网卡配 置 1.2如何修改网卡的IP、子网掩码、默认网关、DNS 1.3查看当前操作系统内核信息 1.4当前操作系统版本信息 1.5查看内存信息 1.6查看进程占用的文件 1.7查看进程占用的地址空间 1.8查看cpu,以及系统硬件信息 1.9查找所有.c文件中含有“hello world”的文件 1.10操作系统五大功能 1.11进程调度有哪些调度算法 1.12内存管理有哪些调度算法 1.13什么是软链接, 什么是硬链接 1.14什么是可重入函数, 不可重入函数? 哪些原因导致函数 不可重入? 1.15.gdb是什么? 怎么使用的? 1.16.linux下有哪些设备? 1.17.什么是VFS(虚拟文件系统)? 1.18.什么是块设备和字符设备和网络设备? 2.APUE 2.1.什么是文件IO, IO常用的系统调用有哪些? 如何实现 文件拷贝? 2.2.系统调用(系统API, 文件IO)和标准IO(库函数)有什么区 别? 什么是缓冲、缓冲有哪些 2.3.么是同步, 异步? 什么是阻塞和非阻塞? 2.4. 怎么将socket设置为阻塞/非阻塞模式? 2.5.说一下五种I/O模型? (不是select, poll, epoll) 2.6. 描述select, poll, epoll的工作原理及区别? 2.7.什么是内核态和用户态? 内核到用户的转换 3.多进程与多线程 3.1. 进程和线程的概念 3.2. 线程和进程有什么区别 3.3. 什么时候使用多进程, 什么时候使用多线程 3.4.进程三态与五态是什么? 3.5. 创建进程有哪些方式(了解即可) 3.6.什么是进程上下文与中断上下文? 3.7.fork和vfork有什么区别? 为什么又fork还要vfork? 3.8.什么是写时拷贝技术? 3.9.什么是孤儿进程, 什么是僵尸进程, 如何避免产生僵 尸进程? 3.10.如何知道进程和线程是否已经退出? 3.11.一个系统最大可以启动多少个线程? 怎么设置线程的 优先级? 3.12.多线程为什么要设置属性, 为什么设置栈的大小? 3.13.线程的堆栈大小要怎么设置, 默认是多少, 最小是多少? 3.14.怎么保证主线程创建的子线程先执行? 线程间通信有 哪些方式? 3.15.什么是线程的同步与互斥? 互斥锁, 条件变量和信号量 的区别? 3.16.什么是临界区, 什么是临界资源? 3.17.什么是线程池? 3.18. 进程间通信有几种? 3.19.什么是死锁? 死锁产生的原因? 死锁的产生有哪些条 件? 怎么解决死锁? 3.20.线程间怎么进行通信以及同步 3.21.线程同步实现的方式? 3.22.Linux 内核中有哪几种锁; 自旋锁与互斥锁有什么区 别? 3.23.条件变量和信号量的区别 3.24.条件变量和互斥锁为什么要配合使用 3.25信号与信号量的区别 4.BSP 4.1描述一下字符设备驱动编写的流程 4.2什么是中断的上半部, 什么是中断的下半部? 4.3.中断的下半部有哪些实现机制? 4.4.Linux 系统启动流程及U-boot
09-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值