当前位置: 首页 > news >正文

黑色背景的网站开发工具前端程序员

黑色背景的网站开发工具,前端程序员,网站制作最流行软件,当下最流行的营销方式在 Linux 中#xff0c;文件 I/O 是指通过系统调用或命令对文件进行的输入输出操作。Linux 操作系统提供了强大的文件操作功能#xff0c;使得用户和程序可以方便地对文件进行读取、写入、修改和管理。文件 I/O 指的是对文 件的输入/输出操作#xff0c;说白了就是对文件的读…        在 Linux 中文件 I/O 是指通过系统调用或命令对文件进行的输入输出操作。Linux 操作系统提供了强大的文件操作功能使得用户和程序可以方便地对文件进行读取、写入、修改和管理。文件 I/O 指的是对文 件的输入/输出操作说白了就是对文件的读写操作Linux 下一切皆文件文件作为 Linux 系统设计思想的核心理念在 Linux 系统下显得尤为重要所以对文件的 I/O 操作既是基础也是最重要的部分。 本章先向大家介绍 Linux 系统下文件描述符的概念随后会逐一讲解构成通用 I/O 模型的系统调用譬 如打开文件、关闭文件、从文件中读取数据和向文件中写入数据以及这些系统调用涉及的参数等内容。 本章将会讨论如下主题内容。  文件描述符的概念  打开文件 open()、关闭文件 close()  写文件 write()、读文件 read()  文件读写位置偏移量。 一、文件IO示例 我们先来看一个简单地文件读 写示例主要涉及到 4 个函数open()、read()、write()以及 close()应用程序代码如下所示 #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h int main(void) {char buff[1024];int fd1, fd2;int ret;/* 打开源文件 src_file(只读方式) */fd1 open(./src_file, O_RDONLY);if (-1 fd1)return fd1;/* 打开目标文件 dest_file(只写方式) */fd2 open(./dest_file, O_WRONLY);if (-1 fd2) {ret fd2;goto out1;}/* 读取源文件 1KB 数据到 buff 中 */ret read(fd1, buff, sizeof(buff));if (-1 ret)goto out2;/* 将 buff 中的数据写入目标文件 */ret write(fd2, buff, sizeof(buff));if (-1 ret)goto out2;ret 0; out2:/* 关闭目标文件 */close(fd2); out1:/* 关闭源文件 */close(fd1);return ret; } 这段代码非常简单明了代码所要实现的功能在注释当中已经描述得很清楚了从源文件 src_file 中读 取 1KB 数据然后将其写入到目标文件 dest_file 中这里假设当前目录下这两个文件都是存在的在进 行读写操作之前首先调用 open 函数将源文件和目标文件打开成功打开之后再调用 read 函数从源文件中 读取 1KB 数据然后再调用 write 函数将这 1KB 数据写入到目标文件中至此文件读写操作就完成了 读写操作完成之后最后调用 close 函数关闭源文件和目标文件。 接下来我们给大家详细介绍这些函数以及相关的内容。 二、文件描述符File Descriptor 在 Linux 中所有的文件操作都是通过文件描述符file descriptor来进行的。文件描述符是一个非负整数它指向内核中的文件表项。每当你打开一个文件时操作系统会返回一个文件描述符。 标准输入stdin文件描述符 0 标准输出stdout文件描述符 1 标准错误stderr文件描述符 2 对于普通文件当你通过 open() 系统调用打开文件时会返回一个文件描述符。程序可以通过这个描述符来读写文件。 调用 open 函数会有一个返回值譬如示例代码 2.1.1 中的 fd1 和 fd2这是一个 int 类型的数据在 open 函数执行成功的情况下会返回一个非负整数该返回值就是一个文件描述符file descriptor这说明文 件描述符是一个非负整数对于 Linux 内核而言所有打开的文件都会通过文件描述符进行索引。 当调用 open 函数打开一个现有文件或创建一个新文件时内核会向进程返回一个文件描述符用于指 代被打开的文件所有执行 IO 操作的系统调用都是通过文件描述符来索引到对应的文件譬如示例代码 2.1.1 中当调用 read/write 函数进行文件读写时会将文件描述符传送给 read/write 函数所以在代码中 fb1 就是源文件 src_file 被打开时所对应的文件描述符而 fd2 则是目标文件 dest_file 被打开时所对应的文件描述符。         一个进程可以打开多个文件但是在 Linux 系统中一个进程可以打开的文件数是有限制并不是可以 无限制打开很多的文件大家想一想便可以知道打开的文件是需要占用内存资源的文件越大、打开的文 件越多那占用的内存就越多必然会对整个系统造成很大的影响如果超过进程可打开的最大文件数限制 内核将会发送警告信号给对应的进程然后结束进程在 Linux 系统下我们可以通过 ulimit 命令来查看进 程可打开的最大文件数用法如下所示 ulimit -n 该最大值默认情况下是 1024 也就意味着一个进程最多可以打开 1024 个文件当然这个限制数其实是 可以设置的这个就先不给大家介绍了当然除了进程有最大文件数限制外其实对于整个 Linux 系统来说也有最大限制那么关于这些问题如果后面的章节内容中涉及到了再给大家进行介绍。 三、打开文件open 在 Linux 中可以通过 open() 系统调用打开文件返回一个文件描述符。该系统调用的语法如下 int open(const char *pathname, int flags, mode_t mode);pathname文件路径flags打开文件的方式例如只读、只写、创建等mode文件权限如果文件是新创建的指定文件的权限 常用的 flags 参数包括 O_RDONLY只读模式O_WRONLY只写模式O_RDWR读写模式O_CREAT如果文件不存在则创建文件O_TRUNC打开文件时截断文件为 0 长度如果文件已存在 在 Linux 系统下可以通过 man 命令也叫 man 手册来查看某一个 Linux 系统调用的帮助信息man 命令可以将该系统调用的详细信息显示出来譬如函数功能介绍、函数原型、参数、返回值以及使用该函数所需包含的头文件等信息man 更像是一份帮助手册所以也把它称为 man 手册当我们需要查看某个系统调用的功能介绍、使用方法时不用在上网到处查找直接通过 man 命令便可以搞定man 命令用法如下所示 man 2 open 四、写入文件write 写入文件内容通过 write() 系统调用来实现。write() 会将数据从缓冲区写入到指定的文件描述符对应的文件中。 #include unistd.h ssize_t write(int fd, const void *buf, size_t count);fd文件描述符buf包含要写入数据的缓冲区count要写入的字节数 返回值如果成功将返回写入的字节数0 表示未写入任何字节如果此数字小于 count 参数这不是错误譬如磁盘空间已满可能会发生这种情况如果写入出错则返回-1。 五、读取文件read 读取文件内容通常通过 read() 系统调用实现。read() 从指定的文件描述符中读取数据到缓冲区中。 #include unistd.h ssize_t read(int fd, void *buf, size_t count);fd文件描述符buf缓冲区用于存储读取的数据count要读取的字节数 返回值如果读取成功将返回读取到的字节数实际读取到的字节数可能会小于 count 参数指定的字节 数也有可能会为 0譬如进行读操作时当前文件位置偏移量已经到了文件末尾。实际读取到的字节数少于要求读取的字节数譬如在到达文件末尾之前有 30 个字节数据而要求读取 100 个字节则 read 读取成功只能返回 30而下一次再调用 read 读它将返回 0文件末尾 六、关闭文件close 文件使用完毕后应该通过 close() 系统调用关闭文件描述符释放系统资源。 #include unistd.h int close(int fd);fd文件描述符 返回值成功时返回 0失败时返回 -1。 除了使用 close 函数显式关闭文件之外在 Linux 系统中当一个进程终止时内核会自动关闭它打开 的所有文件也就是说在我们的程序中打开了文件如果程序终止退出时没有关闭打开的文件那么内核会 自动将程序中打开的文件关闭。很多程序都利用了这一功能而不显式地用 close 关闭打开的文件。 七、lseek 在 C 语言中lseek() 函数用于在打开的文件中进行文件指针的位置移动。它允许我们在文件中进行随机访问指定新的文件偏移量即文件指针的当前位置。该函数可以向前、向后移动文件指针甚至使其跳转到文件的任意位置。 #include unistd.h off_t lseek(int fd, off_t offset, int whence);fd文件描述符。表示一个已打开文件的文件描述符。可以通过 open() 系统调用返回的文件描述符来获取。 offset相对于 whence 的偏移量。它表示新的文件指针的位置。如果 whence 的值为 SEEK_SET则偏移量是相对于文件开头的如果 whence 的值为 SEEK_CUR则偏移量是相对于当前文件指针的位置如果 whence 的值为 SEEK_END则偏移量是相对于文件结尾的位置。 whence指明偏移的起始位置。可以是以下值之一 SEEK_SET表示从文件的起始位置开始计算偏移量。 SEEK_CUR表示从当前文件指针位置开始计算偏移量。 SEEK_END表示从文件的结尾位置开始计算偏移量。 返回值成功时返回新的文件偏移量以字节为单位。失败时返回 -1并且设置 errno 以指示错误原因 错误码常见的错误包括 EINVAL传入的 whence 值无效。 ESPIPE文件描述符不支持 lseek() 操作例如套接字文件描述符 使用示例 以下是一个使用 lseek() 的简单示例它演示了如何在文件中移动文件指针并进行读取操作 #include stdio.h #include fcntl.h #include unistd.h #include errno.hint main() {// 打开文件int fd open(example.txt, O_RDWR | O_CREAT, 0644);if (fd -1) {perror(Failed to open file);return 1;}// 写入一些数据write(fd, Hello, world!, 13);// 使用 lseek 定位到文件的开头off_t offset lseek(fd, 0, SEEK_SET);if (offset -1) {perror(Failed to seek to the beginning);close(fd);return 1;}// 读取文件内容char buffer[20];ssize_t bytes_read read(fd, buffer, sizeof(buffer) - 1);if (bytes_read -1) {perror(Failed to read file);close(fd);return 1;}// 确保字符串以 \0 结尾buffer[bytes_read] \0;printf(File content: %s\n, buffer);// 使用 lseek 定位到文件末尾offset lseek(fd, 0, SEEK_END);if (offset -1) {perror(Failed to seek to the end);close(fd);return 1;}// 文件指针现在在文件的末尾写入新的数据write(fd, Goodbye!, 9);// 关闭文件close(fd);return 0; }解释 打开文件首先我们通过 open() 打开文件 example.txt并确保该文件可以读写。如果文件不存在则创建文件。 写入数据写入字符串 Hello, world! 到文件中。 文件指针移动到文件开头使用 lseek(fd, 0, SEEK_SET) 将文件指针移动到文件开头。 读取文件内容从文件中读取数据并输出。 文件指针移动到文件末尾使用 lseek(fd, 0, SEEK_END) 将文件指针移动到文件末尾。 写入更多数据在文件的末尾添加新的数据。 关闭文件完成文件操作后关闭文件描述符 本小节内容到此结束。2025年决定把linux-C/C相关内容重温分享给大家。欢迎留言评论感谢
http://www.w-s-a.com/news/401046/

相关文章:

  • 优创智汇高端网站建设网站设计工作流程
  • 什么网站可以学做西餐个人网站怎么做支付功能
  • 千户微建站平台做网站需要切图吗
  • 织梦cms 学校网站模板网站建设中的问题
  • 山东济南网站建设公司制作wordpress模板教程视频教程
  • 档案网站的建设怎样更新网站内容
  • 网站开发项目规划房地产趋势与前景
  • 网上网站开发这个百度的网站怎么做的
  • 南昌市建设局官方网站网龙网络公司地址
  • 自助建站平台源码公司网站谁负责做
  • 旅游的网站怎么做网站流量的主要来源有
  • 高新网站设计找哪家网络科技有限公司实习报告
  • 专业网站建设质量推荐网络销售是做网站推广
  • 旅游网站建设模板wordpress最好最全的教程
  • 网站站长在哪登陆后台网站设计一年费用
  • 济南比较好的网站建设公司邢台信息网123
  • 双峰网站建设漳州优化网站建设
  • app和网站开发的成本虚拟主机是啥
  • 想做一个自己设计公司的网站怎么做的销售培训
  • 南昌网站建设模板合作凡客app哪去了
  • 有免费做网站的吗建设互联网站
  • 北京市保障房建设投资中心网站淄博哪个网站做房屋出赁好
  • 如何做网站的优化网站开发怎么收费
  • 网站的关键词怎么选择2345实用查询
  • 免费的制作网站做图剪片文案网站app接单
  • 中国有多少网站有多少域名上海网站建设网页制作邢台
  • 网站 数据报表如何做室内设计联盟官方网站入口
  • 怎样建设网站论文合肥做网站的软件公司
  • 收款后自动发货的网站是怎么做的怎么看网站后台网页尺寸
  • 谷歌seo引擎优化宁波seo关键词