纸上得来终觉浅,绝知此事要躬行 ——陆游
《Linux系统编程篇》——基础篇首页传送门
在Linux系统编程中,我们先来看基本的API,理解基本的文件操作函数是非常重要的。
这节我们带着大家一起进入文件编程。
文件我们想到无非就三个操作,1、打开文件,2、操作文件内容,3、关闭文件
把大象装进冰箱?是的,就是这么简单。
于是乎,我们如何装进这个大象是我们学习的关键,用什么工具去打开冰箱(文件),如何把大象放进去(操作文件内容),放进去关冰箱(释放文件)
我们在Linux系统上,当然用的是Linux系统的API,来操作系统的文件了,Linux系统给我们提供哪些工具呢?
下面我列举了一些。可以先看一下,大致熟悉一下open
- 第一个原型是用于打开已存在文件的,第二个原型是用于创建新文件的。
- 参数是一个指向要打开的文件的路径名的指针。
- 参数指定了打开文件的方式,比如只读、只写、读写等。常见的标志包括、、等。
- 参数用于指定新文件的权限,通常用于创建文件时。比如表示文件所有者可读写,其他用户只读。
- 是新创建文件的权限,通常与 标志一起使用。
- 返回值:成功时返回文件描述符(非负整数),失败时返回 -1。
函数用于关闭一个先前打开的文件。下面是 函数的原型和说明:
- 是之前使用 或其他文件操作函数返回的文件描述符。通过关闭文件描述符,可以释放系统资源并确保文件的正确关闭。
- 返回值:如果成功关闭文件,则返回值为 0。如果出现错误,返回值为 -1。
函数用于从已打开文件中读取数据。下面是 函数的原型和说明:
- 是之前使用 打开文件返回的文件描述符。
- 是一个指向存储读取数据的缓冲区的指针。
- 是要读取的字节数。
- 返回值:成功时返回实际读取的字节数,如果到达文件末尾则返回 0,出现错误时返回 -1。
函数用于向文件中写入数据。下面是 函数的原型和说明:
- 是之前使用 打开文件返回的文件描述符。
- 是一个指向要写入的数据的缓冲区的指针。
- 是要写入的字节数。
- 返回值:成功时返回实际写入的字节数,出现错误时返回 -1。
函数在Linux系统中用于设置文件偏移量,即移动文件描述符的读写位置。下面是 函数的原型和说明:
- 是之前使用 打开文件返回的文件描述符。
- 是要移动的偏移量,可以为正数、负数或零。
- 用于指定偏移量的基准位置,可以是 、 或 。具体含义如下:
- :从文件开头开始偏移。
- :从当前文件位置开始偏移。
- :从文件末尾开始偏移。
- 返回值:返回新的文件偏移量,若出现错误返回 -1。
函数用于删除一个文件的目录项(文件名),并减少该文件的链接数。如果链接数变为零,则文件的数据块将被释放。下面是 函数的原型和说明:
是要删除的文件的路径名。
- 返回值:成功时返回 0,失败时返回 -1。
就只有这些个操作函数吗?不,不是的,后面可能会遇到新的接口,接触自己认知以外的函数,我们遇到这些应该怎么办,不要慌,我告诉你怎么办。
或者
总之,建议找不到函数的时候多看这个man手册,他里面都是有结构规律的,只需要找我们需要的东西就好,不用抠字眼一个一个去通读。
实现功能:两个文件,demo1.c 以及 demo2.c
- demo1.c创建文件
- demo2.c删除文件
demo1.c创建文件
使用open创建一个文件,使用write向里面写入一段话“hello Linux,i im jiaju(Strange_Head) I’m coming.”,然后读取(read)全部的内容,打印到命令行,然后再次使用write尾部追加写入,“家驹很帅,梦想很近”,”-------------------------“,最后操作完成,使用close关闭文件.
注意,容易混的地方是lseek(将他理解为编辑文件时候的光标),初学者请慢慢理解下面的代码,附带详细注释。

demo2.c删除文件(手动制作rm命令)
直接调用unlink删除文件。
我们直接调用这个命令删除一个的固定文件,感觉不爽,既然要删除文件,如果我能指定就好了,直接做一个低配版的rm命令!
使用argc,argv的特性,轻松完成


调用demo1.c编译出的https://zhangjiaju.blog.csdn.net/article/details/creat,生成家驹很帅.txt
调用demo2.c编译出的https://zhangjiaju.blog.csdn.net/article/details/myrm, 删除生成的文件。
fopen,fread,fwrite,flseek等等……
很多小伙伴可能知道,fopen可以打开文件,他和open有什么不一样呢,明明最终的结果是一样的。
答案:当然不一样,除了多了一个前缀f,还多了很多细节,我们来拓展一下。
- 函数是一个系统调用,而 函数是C标准库提供的函数。
- 函数是低级别的函数,提供了更多的控制和自由度,可以指定文件的打开模式(读、写、追加等)、权限等。 函数则是高级别函数,通常用于简单的文件操作,它提供了一种更简单的接口,隐藏了一些底层细节。
- 函数返回一个文件描述符(file descriptor),而 函数返回一个 类型的指针。文件描述符是一个整数,用于标识已打开的文件,而 是一个指向
结构体的指针,该结构体包含了文件流的信息。- 使用 函数打开文件后,通常需要使用 和 等系统调用来进行读写操作;而使用 函数打开文件后,可以使用 、 等标准库函数来进行读写操作。
- 函数是Unix标准的一部分,而 函数是C标准库的一部分。
- 有缓冲区,没有
无论是使用open,还是fopen,看个人喜好,已经代码编程习惯,我是倾向于open系列的。
今天的学习就到这里了,唯手熟尔,我这里实现了一个rm功能,是不是可以自己想一想,实现一个cp自己的拷贝命令呢。
今天的文章 2026年linux怎么学c语言(linux怎么使用c语言)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/33098.html