window linux IPC ftok BY_HANDLE_FILE_INFORMATION

看這題目就很亂,心情當然也是不怎么美好了。前一段時間做了一個項目,AIX(Unix的一種)中的一個系統向WINDOWS移植,開發環境由IBM的C/C++(叫什么忘記了,好像是xlC)變為VC++。

這是算過來,但是最近進程通信的信號量出了問題(也不算什么問題,就是全局信號量的名字應該怎么命名有點問題了。)

AIX系統中,信號量的名字其實是key_s(本質就是int),key_s是通過ftok返回了。大概的邏輯就是指定一個系統中存在的文件,取文件的索引節點號的低24位,然后高8位使用偏移字段,

這樣,同一個系統文件可以最多生成256個信號量名稱。

但是WINDOWS這邊沒有,WINDOWS這么只需要指定一個字符串就可以了。但是字符串前綴可以是Golbal, Local, 無,三種情況,由于區分信號量是全局,本地,默認(本地)的。

然后我就使用文件名稱(沒有帶路徑)生成了一個信號量的名字,因為當時真的沒有找到WINDOWS的文件索引節點號(壓根沒有這個概念,好吧我承認是被度娘騙的分文不剩)。

后來我領導這日本雅虎上確實找到了WINDOWS這邊與之對應的概念,就是BY_HANDLE_FILE_INFORMATION,其實AIX存文件的時候,是使用設備號+文件號來存儲的,而WINDOWS是

采用設備號+文件號高位+文件號地位來存儲的,應該算的上是一種對應關系。(在WINDOWS這邊也有IPC,但是里面的設備號和文件號都是0)

typedef struct _BY_HANDLE_FILE_INFORMATION {DWORD ???dwFileAttributes;FILETIME ftCreationTime;FILETIME ftLastAccessTime;FILETIME ftLastWriteTime;DWORD ???dwVolumeSerialNumber;DWORD ???nFileSizeHigh;DWORD ???nFileSizeLow;DWORD ???nNumberOfLinks;DWORD ???nFileIndexHigh;DWORD ???nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;

加粗的就是定義了。使用這個就是可以通過3個DWORD(也可以理解是一種int)就可以唯一標識一個文件了。如果文件不存在,就是-1(在內存中是0xffffffff)。
而后需要解釋的就是WINDOWS中的信號名稱最好是“xxxx-xxxxxxxx-xxxxxxxxxxxxxxxx”(偏移-設備號-文件號)這種形式。
_BY_HANDLE_FILE_INFORMATION 的獲取方式:
---- get fi ----
HANDLE h = INVALID_HANDLE_VALUE;
BY_HANDLE_FILE_INFORMATION fi;
h = CreateFile(path, 0, 0, NULL, OPEN_EXISTING, 0, NULL);
GetFileInformationByHandle(h, &fi);
---- get fi ----

轉載于:https://www.cnblogs.com/ys0103/p/4991310.html

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

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

相關文章

相機標定(一) —— 深入理解齊次坐標及其作用

一、什么是齊次坐標和齊次坐標系 齊次坐標 齊次坐標是一個相機標定問題的關鍵理論之一,所以就此問題分析一下。 單從定義上來講,齊次坐標(投影坐標)就是用N1維來代表N維坐標(點和向量),也可說…

機器學習——圖解SVM中gamma和c參數的作用

參數c和gamma的作用 我們通過下圖詳解參數c的作用,首先我們以一個簡單的線性分類器為例,上一個博客中我們知道影響分類器的主要因素是支持向量,即虛線上的樣本,如下圖可知: 但當正負樣本的分布在如下情況時&#xff0…

關于結構體里面結構體的申明和使用

申請: typedef struct Vo{int Voltage;float Delay_ms;char Enable;}Volt_Def;typedef struct ed{float Delay_ms;int Level;}Edge_Def;typedef struct Ed_hard{Edge_Def a;Edge_Def b;Edge_Def c;}HARD_RESET;int power_sel 0xff;typedef struct power_x{Volt_Def…

面試題(十四)

唐巧前輩說這些都是 iOS 的基礎問題,應該對此深入的了解。當初看到時,大部分回答不上來,因為平時沒有好好思考整理過。這里大部分的概念大多會在學習 OC 的過程中遇到過,但還是得經過寫代碼才能有更深的理解。反正我當初看那些設計…

工業相機基礎知識詳述 —— 焦平面,像平面,彌散圓,光圈,分辨率,景深,接口,靶面尺寸

一、焦平面 想到焦平面,很多人不由自主就想到不就是焦點所在的垂直于光軸的平面嗎?其實其背后隱藏這更多的東西。 1)焦點不止一個 對于一般拍攝場景來說,光通過一個凸透鏡,匯聚不到一個點,越靠近中軸線的…

機器學習——SVM之交叉驗證對參數(C,gamma)進行優化以及選擇

目錄 一、(C,gamma)簡介 二、交叉驗證 1、什么是交叉驗證? 2、參數優化方法

【BZOJ-2427】軟件安裝 Tarjan + 樹形01背包

2427: [HAOI2010]軟件安裝 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 960 Solved: 380[Submit][Status][Discuss]Description 現在我們的手頭有N個軟件,對于一個軟件i,它要占用Wi的磁盤空間,它的價值為Vi。我們希望從中選擇一些軟件…

Hadoop目錄

1. 通過java讀取HDFS的數據 (轉) 2. FLume監控文件夾,將數據發送給Kafka以及HDFS的配置文件詳解 3. 開啟hadoop和Hbase集群的lzo壓縮功能(轉) 4. Hadoop集群WordCount運行詳解(轉)轉載于:https://www.cnblo…

相機標定(二)深入理解四大坐標系與其變換關系

一、前言 視覺系統一共有四個坐標系:像素平面坐標系(u,v)、圖像坐標系(x,y)、相機坐標系(Xc,Yc,Zc)和世界坐標系(Xw,Yw,Zw),如下圖所示。每種坐標系之間均存…

numpy——ravel()和flatten()

目錄 功能 用法 區別 flatten() ravel() 功能 這兩個函數的功能都是將多維數組轉換成一維 用法 import numpy as np arr np.array([[1, 2],[3, 4]]) arr.flatten()降維默認行序優先,傳入參數‘F’表示列序優先 arr.flatten(F) arr.r…

Django的model中日期字段設置默認值的問題

之前寫過這樣一個model: class MonthlyFeeMember(models.Model):worker models.ForeignKey(Student, verbose_nameu"worker", related_name"as_monthly_fee_members")month models.CharField(umonth, max_length10, defaultget_current_month…

相機標定(三) —— 畸變校正

一、前言 根據針孔模型,物體和成像之間參數會滿足相似三角形的關系。但現實中會存在裝配誤差和透視失真等原因,導致這種關系無法成立,使理想成像與實際成像存在誤差,這種誤差即稱為畸變。 畸變分為徑向畸變,切向畸變和…

SVG技術入門:線條動畫實現原理

相信大家都見到過這樣神奇的技術:一副線條構成的畫能自動畫出自己。非常的酷。Jake Archibald是這種SVG技術的首創者,并且寫了一篇非常好的文章來描述它是如何實現的。Brian Suda也在24 Ways網站上討論過它。 Polygon使用它在一篇設計方面的文章里創造出…

機器學習——人工神經網絡之BP算法編程(python二分類數據集:馬疝病數據集)

目錄 一、理論知識回顧 1、神經網絡模型 2、明確任務以及參數 1)待估參數: 2)超參數: 3)任務 3、神經網絡數學模型定義 1)激活函數 ? 2)各層權重、閾值定義 3)各層輸入輸…

Halcon例程(基于多個標定圖的單目相機標定)詳解—— Camera_calibration_multi_image.hdev

一、前言 在我的工業相機專欄里已經將相機標定涉及到的理論部分講解完畢,為什么要標定以及標定要求出什么參數呢,用一個Halcon 例程來幫助理解。 這個例程是比較經典的標定程序,基本將標定過程講的比較清楚,用的標定圖像是系統自…

SkipList 跳表

為什么選擇跳表 目前經常使用的平衡數據結構有:B樹,紅黑樹,AVL樹,Splay Tree, Treep等。 想象一下,給你一張草稿紙,一只筆,一個編輯器,你能立即實現一顆紅黑樹,或者AVL樹…

Redis failover過程

在Leader觸發failover之前,首先wait數秒(隨即0~5),以便讓其他sentinel實例準備和調整。如果一切正常,那么leader就需要開始將一個salve提升為master,此slave必須為狀態良好(不能處于SDOWN/ODOWN狀態)且權重值最低(redis.conf中)的…

機器學習——深度學習之卷積神經網絡(CNN)——LeNet卷積神經網絡結構

目錄 一、卷積神經網絡 1、卷積神經的作用 2、LeNet 1)數據庫準備——minst 2)模型 二、關于卷積神經網絡結構的一些術語定義 1、特征圖(Feature map) 2、height(長度)、width(寬度&…

工業相機(3D)主要參數詳述

一、前言 準確的完成相機選型是一個視覺工程師必備的技能,而選型前必須對其內部參數了如指掌。工業相機是一種比較復雜的產品,其參數很多,每個參數可能會有不同的標準,下面對主要的參數會做比較詳細的闡述。 二、參數詳述 2.1 …

JAVA8永久代

在Java虛擬機(以下簡稱JVM)中,類包含其對應的元數據,比如類的層級信息,方法數據和方法信息(如字節碼,棧和變量大小),運行時常量池,已確定的符號引用和虛方法表…