【Unix】消息類的格式與使用

本文給出一個MacOS操作系統中的消息類的使用過程示例(結合gencat命令,<nl_types.h>頭文件以及catopen,catgets,catclose3個函數)


首先根據對應的操作系統,查看gencat命令

man gencat

可以詳細看到其中對于輸入文件(消息文件,假設該文件名為msg)的要求($set后面的是集合號,消息前面的是序號,“Hello msg1.1”是消息)。給出一個示例:

$set 1
1 Hello msg1.1
$set 2
1 Hello msg2.1
$set 3
2 Hello msg3.2
$set 4
3 Hello msg4.3

執行gencat命令生成對于的二進制格式的數據庫文件:

gencat msg.cat msg

生成一個數據庫文件msg.cat


順手擼一個用來讀取該 msg.cat 文件的示例:

// catgets.cpp#include <nl_types.h>
#include <iostream>
#include <string.h>
#include <unistd.h>/*** 1. 編輯一個catalog文件(例如 msg 文件,詳見 man gencat)*  
$set 1 這是集合1
1 Hello msg1.1
$set 2 這是集合2
1 Hello msg2.1
$set 3
2 Hello msg3.2
$set 4
3 Hello msg4.3* 2. 使用gencat命令: gencat <out-file> <in-file>* 3. gencat msg.cat msg*/int main(int argc, char* argv[]) {if (argc != 2) {std::cout << "./catgets <catalog-file>" << std::endl;return 0;}// /Users/tao/Code/C/vscode/nl_types/msg.catnl_catd c = catopen(argv[1] /* 由gencat生成 */, NL_CAT_LOCALE);if (c == (nl_catd)-1) {std::cerr << "catopen error: " << strerror(errno) << std::endl;exit(-1);}for (;;) {int set;int num;std::cout << "input:<set> <num>" << std::endl;std::cin >> set;std::cin >> num;char* msg = catgets(c, set, num, "default msg");std::cout << "msg: " << msg << std::endl;}int res = catclose(c);if (res == -1) {std::cerr << "catclose error: " << strerror(errno) << std::endl;exit(-1);}return 0;
}

編譯:

c++ catgets.cpp -o catgets

執行(可以看到與最上面的消息文件一致):

./catgets /Users/tao/Code/C/vscode/nl_types/msg.cat
input:<set> <num>
1 1
msg: Hello msg1.1
input:<set> <num>
2 1
msg: Hello msg2.1
input:<set> <num>
2 2
msg: default msg
input:<set> <num>
3 1
msg: default msg
input:<set> <num>
3 2
msg: Hello msg3.2
input:<set> <num>
4 1
msg: default msg
input:<set> <num>
4 2
msg: default msg
input:<set> <num>
4 3
msg: Hello msg4.3

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

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

相關文章

Typescript高級: 深入理解extends keyof語法

概述 在TypeScript中&#xff0c;extends關鍵字是類型系統中一個極其重要的組成部分它不僅用于類的繼承&#xff0c;也是類型兼容性檢查和泛型約束的關鍵機制特別是當它與keyof關鍵字結合&#xff0c;形成K extends keyof T的結構時它為類型系統帶來了強大的靈活性和表達能力&…

動態SQL where, choose語句

where語句就一個<where>標簽, 很簡單, 不再過多贅述 接下來我們來看 choose語句的使用 其實choose語句就像java里的swith語句 , 如果語句前面的生效 , 后面的就不會生效了 可以定義查詢的優先級

讀人工智能時代與人類未來筆記19_讀后總結與感想兼導讀

1. 基本信息 人工智能時代與人類未來 (美)亨利基辛格,(美)埃里克施密特,(美)丹尼爾胡滕洛赫爾 著 中信出版社,2023年6月出版 1.1. 讀薄率 書籍總字數145千字&#xff0c;筆記總字數39934字。 讀薄率39934145000≈27.5% 1.2. 讀厚方向 千腦智能 腦機穿越 未來呼嘯而來 …

【工具】 MyBatis Plus的SQL攔截器自動翻譯替換“?“符號為真實數值

【工具】 MyBatis Plus的SQL攔截器自動翻譯替換"?"符號為真實數值 使用MyBatis的配置如下所示&#xff1a; mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl調用接口&#xff0c;sql日志打印如下&#xff1a; 參數和sql語句不…

Spring Boot配置MySQL數據庫連接數

1.如何在Spring Boot中配置MySQL數據庫的連接數 1.1主要配置 在Spring Boot中配置MySQL數據庫連接數通常涉及到兩個主要的配置&#xff1a; &#xff08;1&#xff09;數據源配置&#xff1a;這通常是在application.properties或application.yml文件中完成的&#xff0c;用于…

頂底背離的終極猜想和運用

這幾天圈內都在傳底蓓離什么的。作為嚴肅的量化自媒體&#xff0c;我們就不跟著吃這波瓜了。不過&#xff0c;我一直很關注技術指標的頂背離和底背離&#xff0c;一直在追問它的成因如何&#xff0c;以及如何預測。 底蓓離把我目光再次吸引到這個領域來&#xff0c;于是突然有…

Java如何實現二維數組行列轉換

二維數組行列轉換就是行號和列號互換 public class Erweishuzubianli {public static void main(String[] args) {int array[][]new int[][]{{8,75,23},{21,55,34},{15,23,20}};int temp;for(int i0;i<array.length;i){for(int j0;j<array[i].length;j){temparray[i][j]…

LitCTF 2024(公開賽道)——WP

目錄 Misc 涐貪戀和伱、甾―⑺d毎兮毎秒 你說得對&#xff0c;但__ 盯幀珍珠 Everywhere We Go 關鍵&#xff0c;太關鍵了! 女裝照流量 原鐵&#xff0c;啟動&#xff01; 舔到最后應有盡有 The love Web exx 一個....池子&#xff1f; SAS - Serializing Authent…

MySQL—函數—日期函數(基礎)

一、引言 接下來討論和學習關于函數的第三個方面——日期函數。 常見的MySQL當中的日期函數。 注意&#xff1a; 1、CURDATE()&#xff1a;cur&#xff1a;current 當前的&#xff0c;返回的是當前日期。 2、CURTIME()&#xff1a;當前時間。 3、NOW&#xff1a;當前的日期和…

Java語言高級編程:探索深層機制與應用技巧

Java語言高級編程&#xff1a;探索深層機制與應用技巧 在編程世界中&#xff0c;Java以其穩定、強大和跨平臺的特性贏得了廣泛的贊譽和應用。對于已經掌握Java基礎知識的開發者來說&#xff0c;深入Java語言的高級編程領域&#xff0c;無疑將開啟全新的技術視野。那么&#xf…

政安晨【零基礎玩轉各類開源AI項目】:解析開源項目的論文:Physical Non-inertial Poser (PNP)

政安晨的個人主頁&#xff1a;政安晨 歡迎 &#x1f44d;點贊?評論?收藏 收錄專欄: 零基礎玩轉各類開源AI項目 希望政安晨的博客能夠對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出指正&#xff01; 本文解析的原始論文為&#xff1a;https://arxiv.org/…

力扣1143. 最長公共子序列

給定兩個字符串 text1 和 text2&#xff0c;返回這兩個字符串的最長 公共子序列 的長度。如果不存在 公共子序列 &#xff0c;返回 0 。 一個字符串的 子序列 是指這樣一個新的字符串&#xff1a;它是由原字符串在不改變字符的相對順序的情況下刪除某些字符&#xff08;也可以…

【TB作品】MSP430G2533,讀取dht11,顯示到lcd1602顯示屏,串口發送到電腦

功能 讀取dht11&#xff0c;顯示到lcd1602顯示屏&#xff0c;串口發送到電腦。 部分程序 void main(void) {char disp[20];char count 0;WDTCTL WDTPW WDTHOLD; // Stop WDTP1DIR 0Xff;P1SEL 0X00;P1SEL2 0X00;P2DIR 0Xff;P2SEL 0X00;P2SEL2 0X00;L…

為什么需要開局調用函數?

初始化操作&#xff1a;在你的應用程序啟動時&#xff0c;可能需要執行一些初始化操作&#xff0c;例如設置默認值、加載配置、建立數據庫連接等。開局調用函數可以幫助你集中管理這些操作&#xff0c;確保它們在應用程序啟動時順利執行。 統一入口&#xff1a;通過一個統一的…

打造你的專屬Vue組件:基于FullCalendar超實用“日程任務管理組件”實戰

打造你的專屬Vue組件&#xff1a;基于FullCalendar超實用“日程任務管理組件”實戰 在現代Web應用中&#xff0c;日程管理是一個常見而又關鍵的功能&#xff0c;它幫助用戶高效安排和追蹤日常任務及會議。Vue.js作為一個流行的前端框架&#xff0c;以其簡潔的語法和強大的組件…

編譯選項導致的結構體字節參數異常

文章目錄 前言問題描述原因分析問題解決總結 前言 在構建編譯工程時&#xff0c;會有一些對應的編譯配置選項&#xff0c;不同的編譯器&#xff0c;會有對應的配置項。本文介紹GHS工程中編譯選項配置不對應導致的異常。 問題描述 在S32K3集成工程中&#xff0c;核1的INP_SWC…

transformer中的ffn

## import torch import torch.nn as nn import torch.nn.functional as F import logging logging.basicConfig(levellogging.INFO, format%(asctime)s %(levelname)s: %(message)s) # 定義FFN層 class FeedForwardNetwork(nn.Module): def __init__(self, input_dim, hi…

python運營商身份證二要素查驗接口、身份證實名認證接口

隨著網絡服務安全需求的日益增長&#xff0c;個人信息的真實性和安全性成為了眾多在線平臺關注的焦點。近日&#xff0c;為應對這一挑戰&#xff0c;翔云人工智能接口開放平臺提供了Python語言的身份證二要素查驗接口”及“實名認證接口”&#xff0c;旨在為各行業提供高效、準…

將字符串 “()“ ““ “|“ 條件組成的復雜表達式轉換為ES查詢語句

應用場景 "()" "&" "|" 這幾個條件對于我們來說并不陌生, 其表達的邏輯非常明了, 又能通過很少的字符表達很復雜的嵌套關系, 在一些復雜的查詢中會經常用到, 因此我最近也遇到了類似的問題,一開始覺得這類的工具應該挺常見的, 結果搜了半天…

JVM垃圾收集器和內存分配策略

概述 Java內存運行時數據區的程序計數器、虛擬機棧、本地方法棧3個區域會隨著線程而產生&#xff0c;隨線程而消失。這幾個區域分配多少內存時在類結構確定下來即已知的&#xff0c;在這幾個區域內就不需要過多考慮如何回收內存的問題&#xff0c;當方法結束或者線程結束時&am…