linux -對文件描述符的操作dup、fcntl有五種

dup

#include<unistd.h>
int dup(int oldfd);作用:復制一個新的文件描述符fd = 3, int fd1 = dup(fd);f指向的是a.txt,fd1指向的也是a.txt從空閑的文件描述符表中找一個最小的作為新的拷貝的文件描述符返回:成功返回新的文件描述符,失敗返回-1

dup2

#include<unistd.h>
int dup2(int oldfd, int newfd);作用: 重定向文件描述符oldfd指向1.txt,newfd原本指向2.txt調用成功后,newfd和b.txt自動做close,同時newfd指向了a.txt如果old和new的值相同,是同一個文件描述符,相當于上面都沒做返回:成功返回新的文件描述符,失敗返回-1

fcntl

有五種用法,常用的兩種

#include <unistd.h>
#include <fcntl.h>int fcntl(int fd, int cmd, ... /* arg */ );參數:fd:需要被操作的文件描述符cmd:表示對文件描述符如何操作的命令1.-F_DUPFD : 復制文件描述符,復制fd,得到并返回一個新的,很像上面的dup2.-F_GETFL : 獲取指定的文件描述符的flag,就是O_RDONLY這樣的-F_SETFL : 設置文件描述符文件狀態flag必選項: O_RDONLY,O_WRONLY,O_RDWR 不可以被修改可選項: O_APPEND表示追加數據, O_ASYNC, O_DIRECT, O_NOATIME, and O_NONBLOCK設置成阻塞

阻塞和非阻塞:描述的是函數調用的行為

eg:第二種改寫文件描述符狀態的操作示例

//假設一開始打開的時候,傳入的文件描述符狀態是只寫狀態
int fd = open("1.txt",O_WRONLY);
if(fd == -1){perror("open");return -1
}
//獲取當前文件描述符的狀態flag
int flag = fcntl(fd, F_GETFL);
flag += O_APPEND;
//修改文件描述符狀態的flag,給falg變成上面修改的新的flag
int ret = fcntl(fd,F_SETFL, flag);
char* str = "nihao";
write(fd,str,strlen(str));
close(fd);
//這樣nihao就可以添加在后面了,這就達到了修改的目的

如果一開始傳入的是O_RDONLY,然后后面再加上O_APPEND的話,還是不行的,因為只有只讀和在尾部追加的權力,并沒有寫的權力,這個東西規定的死板的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896182.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek各模型現有版本對比分析

文章目錄 一、基礎模型系列&#xff1a;V1 到 V3 的演進二、專用模型系列&#xff1a;推理與多模態三、版本選型與商業化趨勢 DeepSeek作為最近特別火爆的模型&#xff0c;本文將對DeepSeek現有的主要版本進行對比分析,涵蓋參數規模、訓練數據、功能改進、應用場景和性能表現等…

深入解析:在Spring Boot中集成MyBatis Plus實現高效數據庫操作

前后端微服務商城項目&#xff0c;手把手教學&#xff01; 在Spring Boot中集成第三方框架&#xff0c;實際上是非常常見的一種做法。Spring Boot自帶了很多開箱即用的功能&#xff0c;但在實際項目開發中&#xff0c;我們經常需要借助一些第三方框架來實現更為復雜的功能。比如…

現場可以通過手機或者pad實時拍照上傳到大屏幕的照片墻現場大屏電子照片墻功能

現場可以通過手機或者pad實時拍照上傳到大屏幕的照片墻現場大屏電子照片墻功能&#xff0c;每個人都可以通過手機實時拍照上傳到大屏幕上,同時還可以發布留言內容&#xff0c;屏幕上會同步滾動播放展示所有人的照片和留言。相比校傳統的照片直播功能更加靈活方便&#xff0c;而…

項目管理工具Jira在營銷工作管理中的應用與實踐

本文由Atlassian全球白金合作伙伴-龍智編輯整理。 市場營銷人員是維系組織團結的粘合劑。作為公司中最具協作精神的團隊之一&#xff0c;他們確保每個人目標一致&#xff0c;并專注于客戶真正的需求。他們擅長溝通協作&#xff0c;積極響應客戶訴求及塑造品牌方向&#xff0c;…

grafana 忘記登陸密碼

重置 Grafana 登錄密碼 通過命令行重置 admin 密碼 # 如果是通過二進制安裝的 Grafana grafana-cli admin reset-admin-password <新密碼>

基于Flask框架的食譜數據可視化分析系統的設計與實現

【Flask】基于Flask框架的食譜數據可視化分析系統的設計與實現 &#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 在當今數字化時代&#xff0c;信息可視化已成為一種高效的數據理解和傳播手段。…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_array_init 函數

ngx_array_init 定義在 src/core/ngx_array.h static ngx_inline ngx_int_t ngx_array_init(ngx_array_t *array, ngx_pool_t *pool, ngx_uint_t n, size_t size) {/** set "array->nelts" before "array->elts", otherwise MSVC thinks* that "…

基于 DeepSeek + Gemeni 打造 AI+前端的多人聊天室

開源項目 botgroup.chat 介紹 AI 多人聊天室&#xff1a; 一個基于 React 和 Cloudflare Pages(免費一鍵部署) 的多人 AI 聊天應用&#xff0c;支持多個 AI 角色同時參與對話&#xff0c;提供類似群聊的交互體驗。體驗地址&#xff1a;https://botgroup.chat 開源倉庫&#x…

GPU和FPGA的區別

GPU&#xff08;Graphics Processing Unit&#xff0c;圖形處理器&#xff09;和 FPGA&#xff08;Field-Programmable Gate Array&#xff0c;現場可編程門陣列&#xff09;不是同一種硬件。 我的理解是&#xff0c;雖然都可以用于并行計算&#xff0c;但是GPU是純計算的硬件…

詳解單例模式、模板方法及項目和源碼應用

大家好&#xff0c;我是此林。 設計模式為解決特定問題提供了標準化的方法。在項目中合理應用設計模式&#xff0c;可以避免重復解決相同類型的問題&#xff0c;使我們能夠更加專注于具體的業務邏輯&#xff0c;減少重復勞動。設計模式在定義系統結構時通常考慮到未來的擴展。…

高清下載油管視頻到本地

下載工具并安裝: yt-dlp官網地址&#xff1a; GitHub - yt-dlp/yt-dlp: A feature-rich command-line audio/video downloader ffmpeg官網地址&#xff1a; Download FFmpeg 注&#xff1a;記住為其添加環境變量 操作命令&#xff1a; 該指令表示以720p碼率下載VIDEO_UR…

Docker掛載數據顯式掛載和隱式掛載的區別

項目使用的Docker file 創建數據卷掛載點&#xff0c;結果發現宿主機目錄中的數據卷路徑下是空的&#xff0c;才知道docker file中創建的數據卷是隱式掛載&#xff0c;并不會在宿主機上留下持久化數據&#xff0c;隨著容器被刪除隱式掛載的數據卷也會跟著被刪除 后面改為在jen…

IOS UITextField 無法隱藏鍵盤問題

設置UITextField 鍵盤按鈕返回鍵為“完成”&#xff0c;即return key 設置done .m代碼設置代理 //設置代理協議 UITextFieldDelegate&#xff0c; self.mobileTextField.delegate self; ///點擊完成鍵隱藏鍵盤 - (BOOL)textFieldShouldReturn:(UITextField *)textField{//取…

【深度學習】Unet的基礎介紹

U-Net是一種用于圖像分割的深度學習模型&#xff0c;特別適合醫學影像和其他需要分割細節的任務。如圖&#xff1a; Unet論文原文 為什么叫U-Net&#xff1f; U-Net的結構像字母“U”&#xff0c;所以得名。它的結構由兩個主要部分組成&#xff1a; 下采樣&#xff08;編碼…

RT-Thread+STM32L475VET6實現定時器定時功能

文章目錄 前言一、板載資源介紹二、具體步驟1.打開STM32CubeMX進行相關配置1.1 使用外部高速時鐘&#xff0c;并修改時鐘樹1.2 打開定時器(定時器根據自己需求調整)1.3 打開串口1.4 生成工程 2. 配置定時器2.1 打開HWTIMER設備驅動2.2 聲明定時器2.3將stm32l4xx_hal_msp.c中HAL…

Linux /etc/fstab文件詳解:自動掛載配置指南(中英雙語)

Linux /etc/fstab 文件詳解&#xff1a;自動掛載配置指南 在 Linux 系統中&#xff0c;/etc/fstab&#xff08;File System Table&#xff09;是一個至關重要的配置文件&#xff0c;它用于定義系統開機時自動掛載的文件系統。如果你想讓磁盤分區、遠程存儲&#xff08;如 NFS&…

鏈表-基礎訓練(二)鏈表 day14

兩兩交換鏈表中的節點 題目示意&#xff1a; 給定一個鏈表&#xff0c;兩兩交換其中相鄰的節點&#xff0c;并返回交換后的鏈表。 你不能只是單純的改變節點內部的值&#xff0c;而是需要實際的進行節點交換。 原先我的思路是圖像上的思路&#xff0c;但是我感覺還是很復雜…

Unity游戲制作中的C#基礎(4)數組聲明和使用

一、數組的聲明 在 C# 中&#xff0c;聲明數組有多種方式&#xff0c;每種方式都有其適用的場景&#xff0c;下面為你逐一詳細介紹&#xff1a; 1. 直接初始化聲明 這種方式直觀且便捷&#xff0c;在聲明數組的同時就為其賦初值&#xff0c;讓數組從誕生之初就擁有了具體的數據…

【Gin-Web】Bluebell社區項目梳理5:投票功能分析與實現

本文目錄 一、投票功能投票流程實現代碼redis投票 一、投票功能 投票流程 首先我們要明確&#xff0c;就是 誰&#xff08;哪個用戶&#xff1a;userID&#xff09; 給 哪個帖子&#xff08;postID&#xff09; 投了 什么票&#xff08;贊成票or反對票&#xff09;。 贊成票…

XUnity.AutoTranslator-deepseek——調用騰訊的DeepSeek V3 API,實現Unity游戲中日文文本的自動翻譯

XUnity.AutoTranslator-deepseek 本項目通過調用騰訊的DeepSeek V3 API&#xff0c;實現Unity游戲中日文文本的自動翻譯。 準備工作 1. 獲取API密鑰 訪問騰訊云API控制臺申請DeepSeek的API密鑰&#xff08;限時免費&#xff09;。也可以使用其他平臺提供的DeepSeek API。 …