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

创建网站要申请域名吗免费设计头像

创建网站要申请域名吗,免费设计头像,汽车行业做网站,没有主机怎么做自己的网站Linux系统文件IO 每个系统都有自己的专属函数#xff0c;我们习惯称其为系统函数。系统函数并不是内核函数#xff0c;因为内核函数是不允许用户使用的#xff0c;系统函数就充当了二者之间的桥梁#xff0c;这样用户就可以间接的完成某些内核操作了。 在前面介绍了文件描…Linux系统文件IO 每个系统都有自己的专属函数我们习惯称其为系统函数。系统函数并不是内核函数因为内核函数是不允许用户使用的系统函数就充当了二者之间的桥梁这样用户就可以间接的完成某些内核操作了。 在前面介绍了文件描述符在Linux系统中必须要使用系统提供的IO函数才能基于这些文件描述符完成对相关文件的读写操作。这些Linux系统IO函数和标准C库的IO函数使用方法类似函数名称也类似下边开始一一介绍。 1. open/close 1.1 open函数 在Linux系统编程中open 函数用于打开一个文件并返回一个文件描述符该文件描述符在后续的文件操作中被用作文件的标识符。如果文件不存在, 就创建一个新文件, open 函数的原型如下 #include sys/types.h #include sys/stat.h #include fcntl.h/* open是一个系统函数, 只能在linux系统中使用, windows不支持 fopen 是标准c库函数, 一般都可以跨平台使用, 可以这样理解:- 在linux中 fopen底层封装了Linux的系统API open- 在window中, fopen底层封装的是 window 的 api */ // 打开一个已经存在的磁盘文件 int open(const char *pathname, int flags); // 打开磁盘文件, 如果文件不存在, 就会自动创建 int open(const char *pathname, int flags, mode_t mode);参数介绍: path 是要打开的文件的路径名。flags 是打开文件的标志可以是以下一种或多种标志的组合 O_RDONLY只读方式打开文件。O_WRONLY只写方式打开文件。O_RDWR读写方式打开文件。O_CREAT如果文件不存在则创建文件。O_EXCL与 O_CREAT 一同使用确保文件不存在(文件存在的话创建失败)避免覆盖已存在的文件。O_TRUNC如果文件存在并且以写入方式打开将文件截断为空。O_APPEND以追加方式打开文件即写入数据时将数据添加到文件末尾。 mode 是一个八进制数指定文件的访问权限仅在创建新文件时有效。通常使用 S_IRUSR、S_IWUSR、S_IXUSR 等宏定义来设置文件权限。 open 函数返回一个非负整数作为文件描述符如果出错则返回 -1。可以**使用该文件描述符进行后续的文件读写操作。**以下是一个简单的例子 #include fcntl.h #include stdio.h #include stdlib.h #include unistd.hint main() {int fd;// 打开文件 example.txt如果不存在则创建以读写方式打开fd open(example.txt, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);if (fd -1) {perror(open);exit(EXIT_FAILURE);}// 使用文件描述符进行文件操作...// 关闭文件if (close(fd) -1) {perror(close);exit(EXIT_FAILURE);}return 0; }请注意错误处理是良好程序设计的一部分上述示例中使用 perror 输出错误信息。 1.2 close函数 通过open函数可以让内核给文件分配一个文件描述符, 如果需要释放这个文件描述符就需要关闭文件。对应的这个系统函数叫做 close函数原型如下 #include unistd.h int close(int fd);函数参数: fd 是文件描述符, 是open() 函数的返回值函数返回值: 函数调用成功返回值 0, 调用失败返回 -1 1.3 打开文件 文件open.c // open.c #include stdio.h #include stdlib.h #include unistd.h #include string.h #include fcntl.hint main() {// 打开文件int fd open(abc.txt, O_RDWR); // 只读打开// int fd open(./new.txt, O_CREAT|O_RDWR, 0664); // 创建新文件// int fd open(./new.txt, O_CREAT|O_EXCL|O_RDWR); // 创建新文件之前, 先检测是否存在// 文件存在创建失败, 返回-1, 文件不存在创建成功, 返回分配的文件描述符if(fd -1){printf(打开文件失败\n);}else{printf(fd: %d\n, fd);}close(fd);return 0; }2. read/write 2.1 read read 函数用于从已打开的文件描述符中读取数据。其原型如下 #include unistd.hssize_t read(int fd, void *buf, size_t count);其中 fd 是已打开文件的文件描述符。buf 是用于存放读取数据的缓冲区的指针。count 是要读取的字节数。 read 函数的返回值为实际读取的字节数如果返回值为0表示已到达文件末尾。如果返回值为-1表示发生错误。 2.2 write write 函数用于将数据写入到文件内部在通过 open 打开文件的时候需要指定写权限函数原型如下 #include unistd.h ssize_t write(int fd, const void *buf, size_t count);其中 fd 是已打开文件的文件描述符。buf 是包含要写入数据的缓冲区的指针。count 是要写入的字节数。 write 函数的返回值为实际写入的字节数。如果返回值为-1表示发生错误。 2.3 测试程序(文件拷贝) #include stdio.h #include stdlib.h #include unistd.h #include string.h #include fcntl.hint main() {// 1. 打开存在的文件a.txt, 读这个文件int fd1 open(./a.txt, O_RDONLY);if (fd1 -1) {perror(open-readfile);return -1;}// 2. 打开不存在的文件, 将其创建出来, 将从a.txt读出的内容写入这个文件中int fd2 open(copy.txt, O_WRONLY | O_CREAT, 0664);if (fd2 -1) {perror(open-writefile);return -1;}// 3. 循环读文件, 循环写文件char buf[4096];int len -1;while ((len read(fd1, buf, sizeof(buf))) 0) {// 将读到的数据写到另一个文件中write(fd2, buf, len);}// 4.关闭文件close(fd1);close(fd2);return 0;}3. lseek lseek 函数用于在文件中定位文件偏移量file offset。它的原型如下 #include sys/types.h #include unistd.hoff_t lseek(int fd, off_t offset, int whence);参数: fd: 文件描述符, open() 函数的返回值, 通过这个参数定位打开的磁盘文件offset: 偏移量需要和第三个参数配合使用whence: 通过这个参数指定函数实现什么样的功能 SEEK_SET: 从文件头部开始偏移 offset 个字节SEEK_CUR: 从当前文件指针的位置向后偏移offset个字节SEEK_END: 从文件尾部向后偏移offset个字节 返回值: 成功: 文件指针**从头部开始计算总的偏移量**失败: -1 3.1 移动文件指针 主要可以进行这三种常用操作: 文件指针移动到文件头部 lseek(fd, 0, SEEK_SET);得到当前文件指针的位置 lseek(fd, 0, SEEK_CUR);得到文件总大小 lseek(fd, 0, SEEK_END);3.2 文件扩展 当我们需要下载很大的文件时, 磁盘紧张, 如果不能马上将文件下载到本地, 磁盘可能会被占用, 这时可以现将字符写入到目标文件中, 让扩展的文件和被下载的文件一样大即可 使用 lseek 函数进行文件拓展必须要满足一下条件 文件指针必须要偏移到文件尾部之后 多出来的就需要被填充的部分。文件拓展之后必须要使用 write()函数进行一次写操作写什么都可以没有字节数要求。 文件扩展举例: // lseek.c // 拓展文件大小 #include stdio.h #include fcntl.h #include unistd.hint main() {int fd open(a.txt, O_RDWR);if(fd -1){perror(open);return -1;}// 文件拓展, 一共增加了 1001 个字节lseek(fd, 1024, SEEK_END);write(fd, , 1);close(fd);return 0; }文件扩展前后文件的大小: 4. truncate/ftruncate truncate/ftruncate 这两个函数的功能是一样的可以对文件进行拓展也可以截断文件。使用这两个函数拓展文件比使用lseek要简单。这两个函数的函数原型如下 // 拓展文件或截断文件 #include unistd.h #include sys/types.hint truncate(const char *path, off_t length);- int ftruncate(int fd, off_t length);参数 path: 要拓展/截断的文件的文件名fd: 文件描述符, open() 得到的length: 文件的最终大小文件原来size length文件被截断, 尾部多余的部分被删除, 文件最终长度为length文件原来size length文件被拓展, 文件最终长度为length 返回值: 成功返回0; 失败返回值-1 truncate() 和 ftruncate() 两个函数的区别在于一个使用文件名一个使用文件描述符操作文件, 功能相同。 不管是使用这两个函数还是使用 lseek() 函数拓展文件文件尾部填充的字符都是 0。 5. perror 一般当程序出错时, 会有一个错误号, 每个错误号对应着错误信息 得到错误号去查询对应的头文件是非常不方便的我们可以通过 perror 函数将错误号对应的描述信息打印出来 #include stdio.h // 参数, 自己指定这个字符串的值就可以, 指定什么就会原样输出, 除此之外还会输出错误号对应的描述信息 void perror(const char *s); 例子: 在前面几个代码中都用到了perror 出错时的提示是这样的
http://www.zqtcl.cn/news/448803/

相关文章:

  • 入侵dedecms网站管理员密码百度注册域名免费建站
  • 找晚上做的工作去哪个网站企业开发软件公司拓展方案
  • 济宁建站公司wordpress博客入门
  • 做外贸需要网站wordpress app 打包
  • 免费网站站长查询丽水微信网站建设公司
  • 广州品牌网站建设先做网站 先备案
  • jsp系统网站建设带源代码梧州网页设计
  • 二手书籍交易网站开发方式关键词seo排名优化如何
  • 陕西西安潍坊网站seo外包
  • 计算机专业网站开发开题报告网站推广营销怎么做
  • 比较大的做网站的公司电影网站盗链怎么做
  • 江苏响应式网站建设哪里有台州网站制作方案
  • 深圳设计网站有哪些展览展会策划公司
  • 微信生活门户网站源码河北建设厅网站初始密码
  • 企业如何做网站推广成都外贸网站建设
  • 网页设计 网站建设 哪个好佛山网站建设推广服务
  • 东莞网站建设技术支持产品推广怎么写
  • 银川app购物网站制作公司网站建设怎样提升形象与品牌价值
  • 中山城市建设集团网站信誉好的邯郸网站建设
  • 做网站很赚钱吗贵阳网站建设费用
  • 设计网站的关键点用ps做招生网站
  • 制作网站公司服务器租赁一年的费用网页动画是如何制作出来的
  • 佛山网站优化有莱芜房产网新房
  • 西安英文旅游网站建设中国建筑工程门户商城
  • 山东企业建站软件购物网站是多少
  • 外链收录网站语音识别程序代做网站
  • 天津平台网站建设公司wordpress删除页头页尾
  • 网站加入站长统计wordpress设置手机浏览器
  • 服务器网站备案怎么做网站流量竞品分析
  • 四川省建设工程信息网站上海金融网站制作公