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

我在某赌博网站做代理做网站需要什么技术

我在某赌博网站做代理,做网站需要什么技术,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.fp688.cn/news/153774.html

相关文章:

  • 做网站会用到的代码单词免费网站java源码大全
  • 网站怎么做网页网络流量统计工具
  • 黑龙江省建设协会网站泰州seo排名扣费
  • 邢台市住房和城乡建设局网站信息互联网推广
  • 如何对网站做优化站长工具源码
  • 石家庄高端外贸建站seo搜索排名优化
  • vue.js做网站软件定制开发公司
  • 建了个网站百度上会有么青岛seo排名扣费
  • 崇信县门户网站首页陕西网络营销优化公司
  • 苏州做企业网站淘宝网页版
  • 百度语音合成wordpress关键词优化步骤简短
  • 哪里网站建设便宜模板网站如何建站
  • 网站建设方案的所属行业是seo排名怎么优化软件
  • 网站怎么做短信接口山西网络营销外包
  • 网站域名备案和icp备案一样么网站推广排名优化
  • wordpress哪个编辑器好用seo关键词如何设置
  • 深圳做app网站公司东莞百度seo在哪里
  • app和网站开发哪个难怎么创建网页
  • 一对一视频网站建设世界企业排名500强
  • 保险销售的建设网站策划书网页设计欣赏
  • 销售网站后台维护怎么做什么平台打广告比较好免费的
  • php网站建设毕业论文数据库分析商旅100网页版
  • wordpress login_headseo 百度网盘
  • 怎么做查询网站吗南昌seo网站推广
  • 网站建设和技术支持网站查询域名
  • 山东省建设工程协会网站青岛seo外包公司
  • 做网站的成本在哪中国企业网络营销现状
  • 最专业的外贸网站建设关键词优化软件有哪些
  • 宁波网络seo推广百度关键词优化培训
  • wordpress文章详细页太原seo优化公司