最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++基于LINUX的文件操作

 更新時間:2023年11月17日 10:48:29   作者:畢明鑫  
這篇文章主要為大家介紹了C++基于LINUX的文件操作示例知識擴充,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

討論套接字的過程討論突然提及文件也許有些奇怪。但對于LINUX而言,socket操作和文件操作沒有區(qū)別,Linux一切皆為文件,因此文件的IO函數(shù)也是socket的IO函數(shù),本文旨在給讀者擴充知識,不必記住所謂的代碼

底層文件訪問和文件描述符

  • 底層:與標準無關(guān)底層提供的函數(shù)

文件描述符:系統(tǒng)分配給文件或者套接字的整數(shù),windows被稱為句柄,用來描述一種時間類型或者事務。

打開文件

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

關(guān)閉文件

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

fd->需要關(guān)閉的文件或者套接字的文件描述符

將數(shù)據(jù)寫入文件

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

fd顯示數(shù)據(jù)傳輸對象的文件描述符。

將數(shù)據(jù)寫入文件

#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# 
*/

讀取文件中的數(shù)據(jù)

#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# 
*/

文件描述符與套接字

下面將同時創(chuàng)建文件和套接字,并用整數(shù)形態(tài)比較返回的文件描述符值。

#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的文件操作的詳細內(nèi)容,更多關(guān)于C++ LINUX文件操作的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • VS2019 Nuget找不到包的問題處理

    VS2019 Nuget找不到包的問題處理

    這篇文章主要介紹了VS2019 Nuget找不到包的問題處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • C/C++編譯報錯printf was not declared in this scope問題及解決

    C/C++編譯報錯printf was not declared in 

    這篇文章主要介紹了C/C++編譯報錯printf was not declared in this scope問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • c++實現(xiàn)逐行讀取配置文件寫入內(nèi)存的示例

    c++實現(xiàn)逐行讀取配置文件寫入內(nèi)存的示例

    這篇文章主要介紹了c++實現(xiàn)逐行讀取配置文件寫入內(nèi)存的示例,需要的朋友可以參考下
    2014-05-05
  • C++11中的智能指針shared_ptr、weak_ptr源碼解析

    C++11中的智能指針shared_ptr、weak_ptr源碼解析

    本文是基于gcc-4.9.0的源代碼進行分析,shared_ptr和weak_ptr是C++11才加入標準的,僅對C++智能指針shared_ptr、weak_ptr源碼進行解析,需要讀者有一定的C++基礎(chǔ)并且對智能指針有所了解
    2021-09-09
  • 基于QT制作一個簡易的傳輸文件小工具

    基于QT制作一個簡易的傳輸文件小工具

    本文主要介紹了通過QT實現(xiàn)的一個文件傳輸小工具。功能就是能實現(xiàn)文件的雙向傳輸,即客戶端能傳給服務端,服務端可以傳給客戶端。文中示例代碼具有一定的學習價值,感興趣的小伙伴可以了解一下
    2021-12-12
  • C++編程中逗號運算符和條件運算符的使用方法講解

    C++編程中逗號運算符和條件運算符的使用方法講解

    這篇文章主要介紹了C++編程中逗號運算符和條件運算符的使用方法講解,需要的朋友可以參考下
    2016-01-01
  • C語言實現(xiàn)飛機游戲(1)

    C語言實現(xiàn)飛機游戲(1)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)飛機游戲的第一部分,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++遞歸與迭代兩種編程范式的對比與實踐應用

    C++遞歸與迭代兩種編程范式的對比與實踐應用

    遞歸(Recursion)是指函數(shù)通過調(diào)用自身來解決問題的一種方法而迭代 (Iteration)是通過循環(huán)結(jié)構(gòu)(如 for、while)重復執(zhí)行一段代碼來解決問題的方法,本文給大家介紹C++遞歸與迭代兩種編程范式的對比與實踐應用,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • C++ 遍歷二叉樹實例詳解

    C++ 遍歷二叉樹實例詳解

    這篇文章主要介紹了C++ 遍歷二叉樹實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語言動態(tài)內(nèi)存的分配實例詳解

    C語言動態(tài)內(nèi)存的分配實例詳解

    動態(tài)內(nèi)存管理同時還具有一個優(yōu)點,當程序在具有更多內(nèi)存的系統(tǒng)上需要處理更多數(shù)據(jù)時,不需要重寫程序,下面這篇文章主要給大家介紹了關(guān)于C語言動態(tài)內(nèi)存分配的相關(guān)資料,需要的朋友可以參考下
    2022-06-06

最新評論

唐山市| 阜平县| 海阳市| 大化| 云南省| 玛多县| 城口县| 满洲里市| 黄浦区| 班戈县| 巴彦县| 日喀则市| 白山市| 平江县| 东海县| 玛沁县| 肇州县| 义乌市| 新乡市| 盐源县| 共和县| 鄱阳县| 盖州市| 成安县| 扎兰屯市| 大新县| 新安县| 梁山县| 嘉善县| 朔州市| 亳州市| 托里县| 宁城县| 思茅市| 安溪县| 西丰县| 喜德县| 扶余县| 宁都县| 赫章县| 大连市|