91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ElfBoard嵌入式教育科普|Linux系統(tǒng)I/O接口:Open函數(shù)詳解

ElfBoard ? 2025-12-29 11:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.函數(shù)概述

open()是 Linux/Unix 內(nèi)核提供的底層系統(tǒng)調(diào)用,核心功能是打開或創(chuàng)建文件。成功調(diào)用后,內(nèi)核會(huì)返回一個(gè)整型的文件描述符作為該文件的句柄,后續(xù)的所有讀寫操作都基于此描述符進(jìn)行。調(diào)用時(shí)需指定訪問(wèn)模式(如O_RDONLY),以決定程序操作文件內(nèi)容的權(quán)限。

2.頭文件

使用open()函數(shù)前,需要包含以下頭文件:

#include #include #include

3.函數(shù)原型

int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);

4.參數(shù)說(shuō)明

4.1pathname

表示要打開的文件路徑,可以是絕對(duì)路徑或相對(duì)路徑。

4.2flags

用于指定文件的打開方式,分為互斥模式和可選標(biāo)志兩類。

互斥模式(必須選擇一種):

wKgZO2lR7qGASeBgAAArJfsO2II188.png

可選標(biāo)志(通過(guò)位或|與互斥模式組合):

wKgZPGlR7LaARvqKAAG-czxaBYw828.png

4.3mode

僅在flags包含O_CREAT時(shí)有效,用于設(shè)置新建文件的權(quán)限。

mode_t為32位無(wú)符號(hào)整數(shù),僅低12位有效,分為四組(共12位):

wKgZO2lR7IaAYy1nAAAb96jqY54202.png

每組3位分別對(duì)應(yīng)讀(r=4)、寫(w=2)、執(zhí)行(x=1)權(quán)限。

例如0644表示用戶可讀寫,組用戶和其他用戶只可讀。

5.返回值

成功:返回文件描述符(非負(fù)整數(shù))

失敗:返回-1

6.實(shí)戰(zhàn)示例

下面通過(guò)一個(gè)具體的例子展示如何以不同方式打開文件,并輸出對(duì)應(yīng)的文件描述符。

6.1創(chuàng)建代碼文件

在/home/elf/work目錄下新建open.c文件,內(nèi)容如下:

#include #include #include #include int main() { // 只讀打開,不存在則創(chuàng)建,權(quán)限 644 int fd1 = open("./test1", O_RDONLY | O_CREAT, 0644); // 只讀打開,若存在則清空,權(quán)限 644 int fd2 = open("./test2", O_RDONLY | O_CREAT | O_TRUNC, 0644); // 讀寫打開,不存在則創(chuàng)建,權(quán)限 664 int fd3 = open("./test3", O_RDWR | O_CREAT, 0664); // 讀寫打開,若存在則清空,權(quán)限 666 int fd4 = open("./test4", O_RDWR | O_CREAT | O_TRUNC, 0666); printf("fd1: %d\n", fd1); printf("fd2: %d\n", fd2); printf("fd3: %d\n", fd3); printf("fd4: %d\n", fd4); return 0; }

6.2編譯與運(yùn)行

elf@ubuntu:~/work$ gcc open.c -o open elf@ubuntu:~/work$ ./open

7.運(yùn)行結(jié)果

程序運(yùn)行后,輸出如下:

fd1: 3 fd2: 4 fd3: 5 fd4: 6

說(shuō)明:文件描述符從3開始分配,因?yàn)?、1、2通常被系統(tǒng)預(yù)留給標(biāo)準(zhǔn)輸入(stdin)、標(biāo)準(zhǔn)輸出(stdout)和標(biāo)準(zhǔn)錯(cuò)誤(stderr)。

8.總結(jié)

open()是Linux系統(tǒng)I/O操作的基礎(chǔ)函數(shù),通過(guò)靈活組合flags參數(shù)可實(shí)現(xiàn)多種文件打開方式。理解并正確使用open()是進(jìn)行文件操作、進(jìn)程間通信和系統(tǒng)編程的重要前提。在實(shí)際開發(fā)中,應(yīng)注意錯(cuò)誤處理,并確保在不再需要文件描述符時(shí)使用 close()函數(shù)及時(shí)關(guān)閉文件,避免資源泄漏。希望本篇文章能為各位小伙伴的實(shí)際開發(fā)帶來(lái)幫助,如果在操作中遇到任何疑問(wèn),歡迎隨時(shí)交流討論。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6076

    文章

    45492

    瀏覽量

    670138
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20435

    瀏覽量

    333902
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6288

    瀏覽量

    117999
  • Open
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    11413
  • RK3588
    +關(guān)注

    關(guān)注

    8

    文章

    555

    瀏覽量

    7314
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式教育科普|GPIO接口全面解析

    在現(xiàn)代科技領(lǐng)域,嵌入式系統(tǒng)接口作為信息交互的核心載體,發(fā)揮著至關(guān)重要的作用,各類接口通過(guò)預(yù)定義的通信協(xié)議與標(biāo)準(zhǔn)化規(guī)范,可以實(shí)現(xiàn)設(shè)備間的精準(zhǔn)數(shù)據(jù)傳輸與智能控制。 作為
    的頭像 發(fā)表于 03-05 11:11 ?3317次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>教育科普</b>|GPIO<b class='flag-5'>接口</b>全面解析

    嵌入式教育科普|SPI接口全面解析

    在現(xiàn)代科技領(lǐng)域,嵌入式系統(tǒng)接口作為信息交互的核心樞紐,扮演著不可或缺的角色。
    的頭像 發(fā)表于 03-24 16:45 ?2333次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>教育科普</b>|SPI<b class='flag-5'>接口</b>全面解析

    ElfBoard嵌入式教育科普|ADC接口全面解析

    當(dāng)代信息技術(shù)體系中,嵌入式系統(tǒng)接口作為數(shù)據(jù)交互的核心基礎(chǔ)設(shè)施,構(gòu)成了設(shè)備互聯(lián)的神經(jīng)中樞?;跇?biāo)準(zhǔn)化通信協(xié)議與接口規(guī)范的技術(shù)架構(gòu),實(shí)現(xiàn)了異構(gòu)設(shè)備間的高效數(shù)據(jù)交換與智能化協(xié)同作業(yè)。本文選取
    的頭像 發(fā)表于 04-30 09:34 ?2271次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>嵌入式</b><b class='flag-5'>教育科普</b>|ADC<b class='flag-5'>接口</b>全面解析

    ElfBoard嵌入式教育科普|CAN接口全面解析

    CAN的全稱是Controller Area Network,譯為控制器區(qū)域網(wǎng)絡(luò),是一種用于車輛、電力系統(tǒng)、工業(yè)設(shè)備等嵌入式系統(tǒng)的半雙工異步串行通信協(xié)議和物理接口。
    的頭像 發(fā)表于 05-28 16:30 ?2293次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>嵌入式</b><b class='flag-5'>教育科普</b>|CAN<b class='flag-5'>接口</b>全面解析

    [分享資料]嵌入式Linux應(yīng)用程序開發(fā)詳解

    Linux的環(huán)境搭建,以及嵌入式LinuxI/O與文件系統(tǒng)的開發(fā)、進(jìn)程控制開發(fā)、進(jìn)程間通信開發(fā)
    發(fā)表于 09-11 23:25

    轉(zhuǎn):嵌入式Linux應(yīng)用程序開發(fā)詳解

    。接著系統(tǒng)地講解了嵌入式linux的環(huán)境搭建,以及嵌入式linuxi
    發(fā)表于 06-12 11:11

    ARM嵌入式Linux系統(tǒng)開發(fā)詳解

    Linux技術(shù)的*發(fā)展,全部采用當(dāng)前最流行和穩(wěn)定的Linux發(fā)行版或者相關(guān)工具,是Linux愛好者學(xué)習(xí)Linux的好幫手?!?b class='flag-5'>Linux典藏
    發(fā)表于 09-14 08:57

    ARM嵌入式Linux系統(tǒng)開發(fā)詳解

    ARM嵌入式Linux系統(tǒng)開發(fā)詳解,供大家參考。
    發(fā)表于 03-17 14:18 ?58次下載

    嵌入式Linux應(yīng)用程序開發(fā)詳解

    。接著系統(tǒng)地講解了嵌入式linux的環(huán)境搭建,以及嵌入式linuxi
    發(fā)表于 06-17 17:24 ?61次下載

    詳解嵌入式linux 啟動(dòng)信息

    詳解嵌入式linux 啟動(dòng)信息
    發(fā)表于 10-30 10:28 ?11次下載
    <b class='flag-5'>詳解</b><b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b> 啟動(dòng)信息

    (網(wǎng)盤)ARM嵌入式Linux系統(tǒng)開發(fā)詳解

    (網(wǎng)盤)ARM嵌入式Linux系統(tǒng)開發(fā)詳解(python嵌入式開發(fā) - csdn博客)-(網(wǎng)盤)ARM
    發(fā)表于 08-04 12:35 ?76次下載
    (網(wǎng)盤)ARM<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>開發(fā)<b class='flag-5'>詳解</b>

    嵌入式linux應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程pdf,嵌入式LINUX應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程-華清遠(yuǎn)見.PDF...

    嵌入式LINUX應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程-華清遠(yuǎn)見《嵌入式LINUX應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程》作者:華清遠(yuǎn)見第6 章 文件I/
    發(fā)表于 11-01 16:32 ?15次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程pdf,<b class='flag-5'>嵌入式</b><b class='flag-5'>LINUX</b>應(yīng)用程序開發(fā)標(biāo)準(zhǔn)教程-華清遠(yuǎn)見.PDF...

    Linux I/O 接口的類型及處理流程

    Linux I/O 接口 Linux I/O
    的頭像 發(fā)表于 11-08 16:43 ?2230次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>I</b>/<b class='flag-5'>O</b> <b class='flag-5'>接口</b>的類型及處理流程

    嵌入式open函數(shù)的使用

    嵌入式系統(tǒng)是指嵌入到其他設(shè)備或系統(tǒng)中,用于控制和管理硬件資源的計(jì)算機(jī)系統(tǒng)。在嵌入式
    的頭像 發(fā)表于 01-04 15:51 ?1537次閱讀

    ElfBoard嵌入式教育科普|UART接口全面解析

    掌握UART等通信接口的深入知識(shí),對(duì)嵌入式初學(xué)者而言,不僅能夠深化對(duì)通信協(xié)議與方式的認(rèn)知,增強(qiáng)調(diào)試技巧及通信接口設(shè)計(jì)能力,還能拓寬應(yīng)用范疇并培育系統(tǒng)級(jí)思考方式。因此本文將對(duì)UART
    的頭像 發(fā)表于 03-10 09:29 ?2060次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>嵌入式</b><b class='flag-5'>教育科普</b>|UART<b class='flag-5'>接口</b>全面解析