嵌入式Linux學習DAY26

管道的作用:進程間的通信

無名管道:

只能在父子進程中進行通信

? ? ? ????pipe
????????int?pipe(int?pipefd[2]);
????????功能:
????????????創建一個無名管道
????????參數:
????????????pipefd[0]:讀管道文件描述符
????????????pipefd[1]:寫管道文件描述符
????????返回值:
????????????成功返回0?
????????????失敗返回-1?
????????無名管道特性:
????????????1.管道中至少有一個寫端:?
????????????????讀取數據時,如果管道中有數據直接讀取,管道中沒有數據阻塞等待直到有數據寫入讀出,繼續向后執行
????????????2.管道中沒有寫端:
????????????????讀取數據時,如果管道中有數據直接讀取,管道中沒有數據不阻塞等待直接向下執行
????????????3.管道中至少有一個讀端:
????????????????寫入數據時,如果管道中沒有存滿,則直接寫入,管道中如果存滿,則阻塞等待直到有數據讀出,才能繼續寫入
????????????4.管道中沒有讀端:
????????????????寫入數據時,會產生管道破裂錯誤,導致程序崩潰


有名管道:


????????打開管道文件?->?讀寫管道文件?->?關閉管道文件

????????注意:有名管道必須讀寫兩端同時加入才能繼續向下執行

????????1.mkfifo?
??????????int?mkfifo(const?char?*pathname,?mode_t?mode);
??????????功能:
????????????創建一個管道文件
??????????參數:
????????????pathname:管道文件路徑
????????????mode:權限
??????????返回值:
????????????成功返回0?
????????????失敗返回-1?

有名管道的雙工通信代碼編寫:

思路:兩個文件,每個文件設兩個進程,a進程用于發送信息,b進程用于接受信息

????????memset函數

????????void *memset(void *s, int c, size_t n);

????????功能:將S中的值全賦成c-----將s初始化。

2.信號

實現內核層與用戶層的信息交互,或者進程間的通信

2.1信號的種類:

kill-l?查詢信號

kill -信號序號 +進程pid? ? ? ? 對進程進行操作

2.2信號處理方式:

2.2.1缺省:默認方式

2.2.2忽略:不相應信號

2.2.3捕捉:按自定義方式處理

? ? ? ? 9號SIGKILL,19號SIGSTOP不能被忽略和捕捉

? ? ? ? SIGINT:Ctrl+c

? ? ? ? SIGQUIT:ctrl+\

? ? ? ? SIGTSTP:ctrl+z

2.2.4signal

? ? ? ? void fun(int a);

? ? ? ? signal(SIGN,fun);????????

????????功能:
????????????改變信號的處理方式

? ? ? ? 參數:SIGN:信號名稱

? ? ? ? ? ? ? ? ? ? fun:遇到信號后的處理方式的函數

????????返回值:
????????????成功返回之前處理函數的首地址
????????????失敗返回SIG_ERR?

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

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

相關文章

【InternLM 實戰營筆記】基于 InternLM 和 LangChain 搭建MindSpore知識庫

InternLM 模型部署 準備環境 拷貝環境 /root/share/install_conda_env_internlm_base.sh InternLM激活環境 conda activate InternLM安裝依賴 # 升級pip python -m pip install --upgrade pippip install modelscope1.9.5 pip install transformers4.35.2 pip install str…

【大廠AI課學習筆記NO.53】2.3深度學習開發任務實例(6)數據采集

這個系列寫了53期了,很多朋友收藏,看來還是覺得有用。 后續我會把相關的內容,再次整理,做成一個人工智能專輯。 今天學習到了數據采集的環節。 這里有個問題,數據準備包括什么,還記得嗎? 數…

ZStack Cube超融合入選IDC《中國超融合基礎架構市場評估》報告

近日,IDC發布了《中國超融合基礎架構市場評估,2023》。IDC針對中國超融合基礎架構市場的發展現狀展開了調研,明確了最終用戶構建融合型云平臺的痛點和難點,闡述了市場中各技術服務提供商的服務方案和優勢,并對未來中國…

vue3+ts+vite數據大屏自適應總結(兩種方法)

總結一下我常用的數據大屏自適應方法 目錄 1、通過css縮放方案: 利用transform:scale 進行適配2、采用rem布局, 根據屏幕分辨率大小不同,調整根元素html的font-size, 從而達到每個元素寬高自動變化,適配不…

接口測試實戰--mock測試、日志模塊

一、mock測試 在前后端分離項目中,當后端工程師還沒有完成接口開發的時候,前端開發工程師利用Mock技術,自己用mock技術先調用一個虛擬的接口,模擬接口返回的數據,來完成前端頁面的開發。 接口測試和前端開發有一個共同點,就是都需要用到后端工程師提供的接口。所以,當…

Redis速學

一、介紹Redis 基本概念和特點 Redis是一個開源的內存數據庫,它主要用于數據緩存和持久化。其數據存儲在內存中,這使得它具有非常快的讀寫速度。Redis支持多種數據結構,包括字符串、哈希、列表、集合和有序集合,這使得它非常靈活…

書生·浦語大模型圖文對話Demo搭建

前言 本節我們先來搭建幾個Demo來感受一下書生浦語大模型 InternLM-Chat-7B 智能對話 Demo 我們將使用 InternStudio 中的 A100(1/4) 機器和 InternLM-Chat-7B 模型部署一個智能對話 Demo 環境準備 在 InternStudio 平臺中選擇 A100(1/4) 的配置,如下圖所示鏡像…

微店商品詳情 API 支持哪些商品信息的獲取?

微店(Weidian)并沒有一個公開的、官方維護的API文檔來供開發者使用。這意味著,如果你想要獲取微店商品詳情或其他相關信息,你通常需要通過微店官方提供的方式來實現,例如使用其開放平臺、官方SDK或聯系微店的技術支持獲…

Spring常見面試題知識點總結(三)

7. Spring MVC: MVC架構的概念。 MVC(Model-View-Controller)是一種軟件設計模式,旨在將應用程序分為三個主要組成部分,以實現更好的代碼組織、可維護性和可擴展性。每個組件有著不同的職責,相互之間解耦…

11.Prometheus常見PromeQL表達式

平凡也就兩個字: 懶和惰; 成功也就兩個字: 苦和勤; 優秀也就兩個字: 你和我。 跟著我從0學習JAVA、spring全家桶和linux運維等知識,帶你從懵懂少年走向人生巔峰,迎娶白富美! 關注微信公眾號【 IT特靠譜 】,每天都會分享技術心得~ …

YOLO算法

YOLO介紹 YOLO,全稱為You Only Look Once: Unified, Real-Time Object Detection,是一種實時目標檢測算法。目標檢測是計算機視覺領域的一個重要任務,它不僅需要識別圖像中的物體類別,還需要確定它們的位置。與分類任務只關注對…

【矩陣】【方向】【素數】3044 出現頻率最高的素數

作者推薦 動態規劃的時間復雜度優化 本文涉及知識點 素數 矩陣 方向 LeetCode 3044 出現頻率最高的素數 給你一個大小為 m x n 、下標從 0 開始的二維矩陣 mat 。在每個單元格,你可以按以下方式生成數字: 最多有 8 條路徑可以選擇:東&am…

安裝 Ubuntu 22.04.3 和 docker

文章目錄 一、安裝 Ubuntu 22.04.31. 簡介2. 下載地址3. 系統安裝4. 系統配置 二、安裝 Docker1. 安裝 docker2. 安裝 docker compose3. 配置 docker 一、安裝 Ubuntu 22.04.3 1. 簡介 Ubuntu 22.04.3 是Linux操作系統的一個版本。LTS 版本支持周期到2032年。 系統要求雙核 C…

C++的模板template

一、什么是模板 C中的模板分為類模板和函數模板,并不是一個實際的類或函數,這指的是編譯器不會自動為其生成具體的可執行代碼。只有在具體執行時,編譯器才幫助其實例化。 二、為什么引入模板 拿我們最常見的交換函數來舉例子,如果…

代碼隨想錄 二叉樹第二周

目錄 101.對稱二叉樹 100.相同的樹 572.另一棵樹的子樹 104.二叉樹的最大深度 559.N叉樹的最大深度 111.二叉樹的最小深度 222.完全二叉樹的節點個數 110.平衡二叉樹 257.二叉樹的所有路徑 101.對稱二叉樹 101. 對稱二叉樹 已解答 簡單 相關標簽 相關企業 給你一…

《求生之路2》服務器如何選擇合適的內存和CPU核心數,以避免丟包和延遲高?

根據求生之路2服務器的實際案例分析選擇合適的內存和CPU核心數以避免丟包和延遲高的問題,首先需要考慮游戲的類型和對服務器配置的具體要求。《求生之路2》作為一款多人在線射擊游戲,其服務器和網絡優化對于玩家體驗至關重要。 首先,考慮到游…

Java應用程序注冊成Linux系統服務后,關閉Java應用程序打印系統日志

Java應用程序有自己的日志框架,有指定位置的日志文件,不需要在系統日志里記錄,占用磁盤空間。 1.Linux系統文件目錄 /etc/systemd/system/ 找到要修改的Java應用程序服務配置 比如bis-wz-80.service 2.設置不打印日志 StandardOutputnull S…

centos7 搭建 harbor 私有倉庫

一、下載安裝 1.1、harbor 可以直接從 github 上下載:Releases goharbor/harbor GitHub 這里選擇 v2.10.0 的版本 wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz 1.2、解壓 tar zxvf harbor-offlin…

L2 網絡 Mint Blockchain 正式對外發布測試網

Mint Blockchain 是由 NFTScan Labs 發起的聚焦在 NFT 生態的 L2 網絡,致力于促進 NFT 資產協議標準的創新和 NFT 在現實商業應用場景中的大規模采用。 Mint Blockchain 于 2024 年 2 月 28 號正式對外發布測試網,開始全面進入生態開發者測試開發階段。 …

2403C++,C++11玩轉無棧協程

原文 C11里也能玩無棧協程了? 答案是:可以! 事實上異網在很早時,C11里就可用無棧協程寫異步代碼了,只不過用起來不太方便,來看看C11里怎么用異網無棧協程寫一個回音服務器的吧. #包含 <異網.h> #包含 <內存> #包含 <向量> #包含 <異網/產生.h> 用 …