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

广州网站建设推广专家团队景区营销案例100例

广州网站建设推广专家团队,景区营销案例100例,wordpress添加小人,沪佳装修贵吗基于Linux的文件操作(socket操作) 1. 文件描述符基本概念文件描述符的定义:标准文件描述符:文件描述符的分配: 2. 文件描述符操作打开文件读取文件中的数据 在linux中,socket也被认为是文件的一种&#xff…

基于Linux的文件操作(socket操作)

  • 1. 文件描述符
  • 基本概念
    • 文件描述符的定义:
    • 标准文件描述符:
    • 文件描述符的分配:
  • 2. 文件描述符操作
    • 打开文件
    • 读取文件中的数据

在linux中,socket也被认为是文件的一种,因此在网络数据传输过程中自然可以使用文件I/O的相关函数。

而在Windows中,是要区分socket和文件的,所以在Windows中需要特殊的数据传输相关的函数。

1. 文件描述符

文件描述符(File Descriptor,简称 FD)是操作系统内核用来管理和访问文件的抽象概念。它是一个非负整数,标识每个进程中已打开的文件、套接字等资源。以下是对文件描述符相关知识的总结:

基本概念

文件描述符的定义:

  • 文件描述符是一个整数,代表一个已经打开的文件或其他输入/输出资源(如套接字、管道等)。
  • 每个进程都有自己独立的文件描述符表。

标准文件描述符:

  • 标准输入(stdin):文件描述符 0,通常关联到键盘输入。
  • 标准输出(stdout):文件描述符 1,通常关联到屏幕输出。
  • 标准错误(stderr):文件描述符 2,通常关联到错误信息输出。

文件描述符的分配:

  • 当进程打开一个新的文件时,系统分配下一个未使用的最小整数作为文件描述符,从 3 开始递增。
  • 例如,标准输入、输出和错误分别占用了文件描述符 012,第一个打开的文件会被分配文件描述符 3

2. 文件描述符操作

打开文件

使用 open 系统调用打开文件并返回文件描述符

#include <fcntl.h>int open(const char *pathname, int flags);
  • pathname:指向要打开的文件路径的字符串。
  • flags:一个整数值,用于指定文件的打开模式和访问模式。常用的标志有:

O_RDONLY:以只读模式打开文件。
O_WRONLY:以只写模式打开文件。
O_RDWR:以读写模式打开文件。
O_CREAT:如果文件不存在,则创建它。
O_EXCL:与 O_CREAT 一起使用,如果文件已存在,则返回错误。
O_TRUNC:如果文件存在,并且以写模式打开,则将文件长度截断为 0。
O_APPEND:以追加模式打开文件,写操作将追加到文件的末尾。

返回值:

  • 成功时,open 返回文件描述符(一个非负整数)。
  • 失败时,open 返回 -1,并设置 errno 以指示错误类型。

示例:(代码来自TCP/IP网络编程 尹圣雨(韩)p10)

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>void error_handling(char *message);int main(void)
{int fd;char buf[] = "Let's go!\n";fd = open("data.txt", O_CREAT | O_WRONLY | O_TRUNC);if (fd == -1)error_handling("open() error!");printf("file descriptor: %d \n", fd);if (write(fd, buf, sizeof(buf)) == -1)error_handling("write() error!");close(fd);return 0;
}void error_handling(char *message)
{fputs(message, stderr);fputc('\n', stderr);exit(1);
}

代码解析:

  • int fd;:定义一个文件描述符变量 fd。

  • char buf[100];:定义一个字符数组 buf,用于存储从文件中读取的数据。

  • fd = open(“data.txt”, O_RDONLY);:打开 data.txt 文件,以只读模式(O_RDONLY)打开。

  • 如果 open 函数返回 -1,表示打开文件失败,调用 error_handling 函数输出错误信息并终止程序。

  • printf(“file descriptor: %d \n”, fd);:输出文件描述符 fd。

  • if (read(fd, buf, sizeof(buf)) == -1):从文件中读取数据到 buf 中。

  • read 函数返回读取的字节数,如果返回 -1,表示读取失败,调用 error_handling 函数输出错误信息并终止程序。

  • printf(“file data: %s”, buf);:输出读取到的数据。

  • close(fd);:关闭文件描述符 fd。

fd = open("data.txt", O_CREAT | O_WRONLY | O_TRUNC);

代表文件打开模式,目录下无data.txt,所以将创建空文件,并只能写

if (write(fd, buf, sizeof(buf)) == -1)

向对应的fd中保存的文件描述符的文件传输buf中保存的数据

  • 在linux下运行结果:
    在这里插入图片描述

读取文件中的数据

#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);

此函数定义中,size_t 是通过 typedef 声明的 unsigned int 类型,对于 ssize_t 来说,size_t 前面多加的 s 代表 signed,即 ssize_t 是通过 typedef 声明的 signed int 类型

参数解释:

  • fd:文件描述符,表示要读取的打开文件。它是通过之前的 open 函数或其他函数(如 pipe)获得的。
  • buf:指向一个缓冲区的指针,读取的数据将被存储在这个缓冲区中。
  • count:要读取的字节数,指定从文件中最多读取多少字节的数据到缓冲区 buf 中。

返回值:

  • 成功时,返回读取的字节数(类型为 ssize_t),这可能小于 count,如果遇到文件结尾(EOF)。
  • 如果返回值是 0,表示已到达文件结尾。
  • 失败时,返回 -1,并设置 errno 以指示具体的错误类型。

代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>void error_handling(char *message);int main(void)
{int fd;char buf[100];fd = open("data.txt", O_RDONLY);if (fd == -1)error_handling("open() error!");printf("file descriptor: %d \n", fd);if (read(fd, buf, sizeof(buf)) == -1)error_handling("read() error!");printf("file data: %s", buf);close(fd);return 0;
}void error_handling(char *message)
{fputs(message, stderr);fputc('\n', stderr);exit(1);
}

代码解释:

  • int fd;:定义一个文件描述符变量 fd。

  • char buf[100];:定义一个字符数组 buf,用于存储从文件中读取的数据。

  • fd = open(“data.txt”, O_RDONLY);:打开 data.txt 文件,以只读模式(O_RDONLY)打开。

  • 如果 open 函数返回 -1,表示打开文件失败,调用 error_handling 函数输出错误信息并终止程序。

  • printf(“file descriptor: %d \n”, fd);:输出文件描述符 fd。

  • if (read(fd, buf, sizeof(buf)) == -1):从文件中读取数据到 buf 中。

  • read 函数返回读取的字节数,如果返回 -1,表示读取失败,调用 error_handling 函数输出错误信息并终止程序。

  • printf(“file data: %s”, buf);:输出读取到的数据。

  • close(fd);:关闭文件描述符 fd。

以上为文件描述符的I/O操作相关的介绍,该内容同样适用于套接字

http://www.hkea.cn/news/24158/

相关文章:

  • 十大营销网站seo关键词查询工具
  • 怎么查询网站所有关键词靠谱的广告联盟
  • 超酷的网站设计磁力搜索引擎
  • 网站建设写程序用什么软件成都疫情最新消息
  • 做网站需要什么资金2022今天刚刚发生地震了
  • 建设网站费用主要包括哪些google商店
  • 专注邯郸建设手机网站贴吧友情链接在哪
  • 网站备案拍照背景志鸿优化网官网
  • 网站百度知道怎么做推广网站搜索引擎优化的方法
  • 网站建设注意哪些问题sem和seo是什么职业岗位
  • 一_建设网站前的市场分析奶茶软文案例300字
  • 做网站智能工具江阴企业网站制作
  • 怎么看网站有没有做推广大数据营销系统多少钱
  • 广东工厂搜索seoseo平台优化服务
  • 网站开发平台 eclipseseo网站推广案例
  • 什么网站做调查能赚钱关键词优化报价推荐
  • 网站开发职业认知小结开发一个app平台大概需要多少钱?
  • 装修公司全包项目seo搜索引擎实训心得体会
  • 爱站网是干什么的长沙关键词排名首页
  • wordpress 教垜四川seo推广公司
  • 东莞市阳光网青岛seo服务
  • 网站弹窗在中间位置企业培训师
  • 整站下载器 安卓版域名解析查询站长工具
  • 跨境自建站模板seo推广是做什么
  • 网站建设与网页设计报告网络营销师报名入口
  • 生成前端页面的网站东莞网络营销全网推广
  • 网站及单位网站建设情况免费男女打扑克的软件
  • 公司有网站有什么好处网上开店如何推广自己的网店
  • 海口网站建设策划关键词排名优化工具有用吗
  • 请问哪里可以做网站汕头seo