Linux系统编程笔记(一)

Linux系统编程即为通过调用系统函数和C语言库函数实现对内核的操作,对不太了解底层原理的开发者来说,就是通过引入对应的头文件从而直接使用对应的API接口函数。

1.简单的文件IO操作。

常用函数解析:

(1)打开文件

int fd = open("./app.c", O_RDWR)

if (-1 == fd)

return fd;

解析:以可读可写的方式打开app.c文件。

(2)读文件

ret = read(fd1, buffer, sizeof(buffer));

解析:从文件中读取sizeof(buffer)个字节数据,将数据存放到buffer中。

(3)写文件

write(fd2, buffer, sizeof(buffer));

解析:将buffer中的数据写入打开的文件中。

(4)关闭文件

close(fd);

解析:关闭对应的文件,参数fd为文件描述符,每个文件的操作都有对应的文件描述符,都不一样,范围0-1023,当操作失败时会返回负值。

(5)定位文件偏移量

1.将读写位置移动到文件开头处: off_t off = lseek(fd, 0, SEEK_SET); if (-1 == off) return -1;
2.将读写位置移动到文件末尾: off_t off = lseek(fd, 0, SEEK_END); if (-1 == off) return -1;
3.将读写位置移动到偏移文件开头100个字节处: off_t off = lseek(fd, 100, SEEK_SET);

if (-1 == off) return -1;
4.获取当前读写位置偏移量: off_t off = lseek(fd, 0, SEEK_CUR); if (-1 == off) return -1;
函数执行成功将返回文件当前读写位置。

调用以上函数时有返回值为负数的情况,返回负值则说明文件操作失败,那到底是什么原因导致的失败呢,则需要调用以下函数。

2.返回错误处理

操作文件失败会返回错误编号errno,该变量为全局变量,任何时候都可以直接调用,该值在不断的更新,例如printf("%d\n",errno);

但是即使知道了错误编号对程序开发者来说也是无意义的,因为通过该编号并不能确定错误的原因。针对这个问题,可以调用printf("Error: %s\n", strerror(errno));该函数会打印出错误原因,比如"No such file or directory",

或者调用perror()函数打印错误原因:

/* 打开文件 */ fd = open("./test_file", O_RDONLY);

if (-1 == fd)

{

perror("open error");

return -1;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值