POCO C 庫學習和分析 程序

2021-06-12 22:52:55 字數 2012 閱讀 6034

關於中的程序其實沒有什麼可說的,不管是其內部實現還是外部使用都非常的簡單。內部實現上只不過是不同作業系統程序api的封裝,下面是它的類圖:

在poco中程序類的所有成員函式都是靜態函式。主要的功能函式覆蓋3個方面:

1. 建立新程序

2. 銷毀其他程序

3. 獲取當前程序資訊

值得注意的是,在poco中程序建立時,可以對程序的i/o程序重定向。其函式如下:

processhandle process::launch( const std::string& path, const std::vector& args, pipe* inpipe, pipe* outpipe, pipe* errpipe)
poco庫中提供了poco::namedmutex和poco::namedevent類用於程序間的同步。同執行緒間同步的類mutex,event相比,程序間同步都是命名的,這毫無疑問是因為作業系統的底層函式的要求。

其類圖如下:

我們都知道管道是乙個單向的通訊通道,或者用來讀或者用來寫。如果兩個程序間要實現雙向的通訊,必須在程序之間建立兩個管道。poco庫中也封裝了管道方便程序通訊,但poco庫中對於管道的讀寫,卻不是通過管道的本身,而是通過poco::pipeoutputstream和poco::pipeinputstream 兩個類。這樣的話,便可以實現和標準庫流操作的無縫結合。

下面是乙個例子來說明這幾者的關係:

#include "poco/process.h"

#include "poco/pipestream.h"

#include "poco/streamcopier.h"

#include using poco::process;

using poco::processhandle;

int main(int argc, char** argv)

管道的類圖如下:

在poco庫中,poco::sharedmemory類用於實現共享記憶體功能。它支援兩種建立方式:

1.從確定大小的記憶體區域

2. 從檔案(通過把檔案對映入共享記憶體區域)

而在介面上,poco::sharedmemory只外露了兩個介面:

char* begin() const;

char* end() const;

begin()函式返回共享記憶體的起點,end()函式則返回其終點。下面是它的類圖和兩個使用例子,並不複雜:

例子一:

// map a file into memory

#include "poco/sharedmemory.h"

#include "poco/file.h"

using poco::sharedmemory;

using poco::file;

int main(int argc, char** argv)

return 0;

}

例子二:

// share a memory region of 1024 bytes

#include "poco/sharedmemory.h"

using poco::sharedmemory;

int main(int argc, char** argv)

return 0;

}

POCO C 庫學習和分析 序

poco是乙個c 的開源庫集。同一般的c 庫相比,poco的特點是提供了整乙個應用框架。如果要做c 程式應用框架的快速開發,我覺得stl boost poco qt mysql實在是個不錯的組合。下面的這張圖提供了poco庫的乙個結構。對於我來說,poco c 的可學習之處至少有以下幾點 1.跨平台...

POCO C 庫學習和分析 平台與環境

在寫程式的時候,有時候需要收集一些系統資訊,用作軟硬體的繫結或生成唯一的註冊碼資訊等。poco中提供了乙個很簡單的類environment來實現這個功能。這個類的定義如下 class foundation api environment this class provides access to e...

POCO C 庫學習和應用

poco c 是乙個開源的c 類庫的集合,它主要提供簡單的 快速的網路和可移植應用程式的c 開發,這個類庫和c 標準庫可以很好的整合並填補c 標準庫的功能空缺。poco庫的模組化 高效的設計及實現使得poco特別適合嵌入式開發。核心庫包括 foundation庫是poco庫集中的乙個,提供了程式設計...