C++基于LINUX的文件操作

 更新时间:2023年11月17日 10:48:29   作者:毕明鑫  
这篇文章主要为大家介绍了C++基于LINUX的文件操作示例知识扩充,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

讨论套接字的过程讨论突然提及文件也许有些奇怪。但对于LINUX而言,socket操作和文件操作没有区别,Linux一切皆为文件,因此文件的IO函数也是socket的IO函数,本文旨在给读者扩充知识,不必记住所谓的代码

底层文件访问和文件描述符

  • 底层:与标准无关底层提供的函数

文件描述符:系统分配给文件或者套接字的整数,windows被称为句柄,用来描述一种时间类型或者事务。

打开文件

#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int open(const char* path, int flag)

关闭文件

#include<unistd.h>
int close(int fd);

fd->需要关闭的文件或者套接字的文件描述符

将数据写入文件

#include&lt;unistd.h&gt;
ssize_t write(int fd, const void* buf,  size_t  nbytes);

fd显示数据传输对象的文件描述符。

将数据写入文件

#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);
}
/*
root@com:/home/swyoon/tcpip# gcc low_open.c -o lopen
root@com:/home/swyoon/tcpip# ./lopen
file descriptor: 3 
root@com:/home/swyoon/tcpip# cat data.txt
Let's go!
root@com:/home/swyoon/tcpip# 
*/

读取文件中的数据

#include <unistd.h>
ssize_t read(int fd, void* buf,  size_t nbytes);
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define BUF_SIZE 100
void error_handling(char* message);
int main(void)
{
    int fd;
    char buf[BUF_SIZE];
    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);
}
/*
root@com:/home/swyoon/tcpip# gcc low_read.c -o lread
root@com:/home/swyoon/tcpip# ./lread
file descriptor: 3 
file data: Let's go!
root@com:/home/swyoon/tcpip# 
*/

文件描述符与套接字

下面将同时创建文件和套接字,并用整数形态比较返回的文件描述符值。

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/socket.h>
int main(void)
{    
    int fd1, fd2, fd3;
    fd1=socket(PF_INET, SOCK_STREAM, 0);
    fd2=open("test.dat", O_CREAT|O_WRONLY|O_TRUNC);
    fd3=socket(PF_INET, SOCK_DGRAM, 0);
    printf("file descriptor 1: %d\n", fd1);
    printf("file descriptor 2: %d\n", fd2);
    printf("file descriptor 3: %d\n", fd3);
    close(fd1);
    close(fd2);
    close(fd3);
    return 0;
}

以上就是C++基于LINUX的文件操作的详细内容,更多关于C++ LINUX文件操作的资料请关注脚本之家其它相关文章!

相关文章

  • 详解C语言中strcpy()函数与strncpy()函数的使用

    详解C语言中strcpy()函数与strncpy()函数的使用

    这篇文章主要介绍了详解C语言中strcpy()函数与strncpy()函数的使用,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • C字符串与C++字符串的深入理解

    C字符串与C++字符串的深入理解

    本篇文章是对C字符串与C++字符串进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 深入探究协程在C++中的实现方式

    深入探究协程在C++中的实现方式

    协程可以被看作是计算机程序中的独立功能块,它们在执行过程中能够暂停和恢复,与传统的函数调用相比,协程更像是一种轻量级的线程,本文我们将深入探究协程在C++中的实现方式,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-12-12
  • C++实现银行排队系统

    C++实现银行排队系统

    这篇文章主要为大家详细介绍了C++实现银行排队系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 十分钟学会C++ Traits

    十分钟学会C++ Traits

    本文试图以最简洁的方式阐述对C++ traits 的理解,当你理解了第二个例子的时候,相信你已经理解了C++ traits,本文通过示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-02-02
  • C语言实现扫雷游戏及其优化

    C语言实现扫雷游戏及其优化

    这篇文章主要为大家详细介绍了C语言实现扫雷游戏及其优化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 详解C++中future和promise的使用

    详解C++中future和promise的使用

    future和promise的作用是在不同线程之间传递数据,这篇文章主要为大家详细介绍了C++中future和promise的具体使用,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-05-05
  • C++ ofstream与ifstream详细用法

    C++ ofstream与ifstream详细用法

    ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间
    2013-07-07
  • C++实现循环队列

    C++实现循环队列

    这篇文章主要为大家详细介绍了C++实现循环队列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • C++实现JPEG格式图片解析(附代码)

    C++实现JPEG格式图片解析(附代码)

    这篇文章主要为大家详细介绍了C++如何实现JPEG格式图片解析功能,文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
    2023-05-05

最新评论