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

C++基于LINUX的文件操作

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

引言

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

底層文件訪問(wèn)和文件描述符

  • 底層:與標(biāo)準(zhǔn)無(wú)關(guān)底層提供的函數(shù)

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

打開(kāi)文件

#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ù)寫(xiě)入文件

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

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

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

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

文件描述符與套接字

下面將同時(shí)創(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的文件操作的詳細(xì)內(nèi)容,更多關(guān)于C++ LINUX文件操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • VS2019 Nuget找不到包的問(wèn)題處理

    VS2019 Nuget找不到包的問(wèn)題處理

    這篇文章主要介紹了VS2019 Nuget找不到包的問(wèn)題處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • C/C++編譯報(bào)錯(cuò)printf was not declared in this scope問(wèn)題及解決

    C/C++編譯報(bào)錯(cuò)printf was not declared in 

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

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

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

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

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

    基于QT制作一個(gè)簡(jiǎn)易的傳輸文件小工具

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

    C++編程中逗號(hào)運(yùn)算符和條件運(yùn)算符的使用方法講解

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

    C語(yǔ)言實(shí)現(xiàn)飛機(jī)游戲(1)

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

    C++遞歸與迭代兩種編程范式的對(duì)比與實(shí)踐應(yīng)用

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

    C++ 遍歷二叉樹(shù)實(shí)例詳解

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

    C語(yǔ)言動(dòng)態(tài)內(nèi)存的分配實(shí)例詳解

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

最新評(píng)論

丹巴县| 台中县| 商水县| 手机| 喀喇| 墨脱县| 江安县| 漳平市| 运城市| 眉山市| 高陵县| 中山市| 长沙市| 渝北区| 湄潭县| 鄂托克前旗| 贵定县| 静宁县| 墨竹工卡县| 黑水县| 安康市| 辰溪县| 镇雄县| 万宁市| 沾化县| 白玉县| 海宁市| 永济市| 井研县| 义马市| 正镶白旗| 鄂托克旗| 淮南市| 西乡县| 合川市| 五大连池市| 永修县| 台南市| 麻栗坡县| 安宁市| 塘沽区|