linuxcom
A. Win和linux怎樣用Com連接
串列口的連接已經是個古老的傳說或冒險,在網卡相當便宜今天,沒人在使用它了。然而如果你的筆記本太老沒有網卡又沒有必要投資的化,你最好的辦法是嘗試拆下筆記本硬碟拷貝文件,因為就算費了就牛二虎之力弄成了com互聯,也不會有什麼好效果,不信你用雙windows連以下(比較容易)就知道了。
B. linux下怎樣設置com1口,讓超級終端通過com1口進行登錄
確認有/sbin/agetty,編輯/etc/inittab,添加
7:2345:respawn:/sbin/agetty /dev/ttyS0 9600
9600bps是因為聯路由器預設一般都是這種速率,也可以設成
19200、38400、57600、115200
修改/etc/securetty,添加一行:ttyS0,確保root用戶能登錄
重啟機器,就可以拔掉滑鼠鍵盤顯示器(啟動時最好還是要看看輸出信息)了
C. LINUX的官方網站
你要那個類型的官方網站?
www.gnu.org
www.linux.org
www.kernel.org
這是linux的核心管網
其他的都是各個發行版的管網
www.ubuntu.com
www.fedoraproject.org
www.redhat.com
www.redflag-linux.com
www.debian.org
www.gentoo.org
http://www.novell.com/linux/
針對常用的 ubuntu fedora redhat 紅旗 debian gentoo Suse
D. linux怎麼運行.com腳本
樓主是想說的什麼問題啊。不清楚, 不過可以幫樓主分析一下的哦
希望可以私信一下。
以後要是遇到了Linux系統問題, shell編程問題, crond問題, 也都可以幫忙搞定哦。
E. linux下能否使用com組件
COM=The Component Object Model組件對象模型
windows的跟linux的不通用
F. LINUX的官方中文網站是什麼
Linux本身只是個內核,發布在http://www.kernel.org,並沒有官方網站這樣的說法
現在用的Linux都是用Linux的內核加上GNU的軟體做出來的,GNU的網站是http://www.gnu.org,好像有部分的中文頁面,但是想看到整個的中文網站,大概不太行,而且這兩個網站都沒有什麼必要弄中文網站,http://www.kernel.org就是發布Linux內核,http://www.gnu.org是宣傳GNU和GPL的地方,還有發布GNU的軟體的,所以也沒太大的必要弄出中文的網站.
Linux的不同發行版有各自的網站,如果你想看,就到你用的Linux發行版的網站上去看看吧,如果是想學習,那麼一本你使用的Linux的用戶手冊應該會有幫助,或者上Linux的論壇之類的,這個有很多中文的,比如http://www.linuxaid.com.cn
http://www.linuxsir.org之類的,搜索一下可以找到很多的
G. linux操作系統 COM用什麼代替
遍,上網的人大部分都隸屬於一些研究機構,或者是大學裡面的學生、教授,有一個名為 Linus Torvalds 的年輕芬蘭大學生在 comp.os.minix 這個新聞群組上發表了這樣一封內容不怎麽起眼的 POST:
Hello everybody out there using minix -
I'm doing a (free) operation system (just a hobby,
won't be big and professional like gnu) for 386(486) AT clones.
這個 Linus 的興趣(hobby)就是 Linux 核心程式 0.02 版的原始碼,當初還是個大學生的 Linus 大概完全沒想到當初被他視為個人興趣的程式,在幾年以後會有超過千萬個使用者,由他自己帶頭開發的作業系統現在已經在世界各地受到普遍的歡迎,還被視為是軟體業巨人微軟公司大力促銷的 NT 系統最大的競爭對手。
Linux 是一套 Unix-like 的作業系統,是 Unix 的一種,它控制整個系統基本服務的核心程式 (kernel) 是由 Linus 帶頭開發出來的,「Linux」這個名稱便是以「Linus's Minix」來命名,Linus 選擇用「大眾公有版權」 (GPL)的方式來發行這份程式,這個版權允許任何人以任何形式與散 Linux 的原始程式,換句話說,Linux 實際上是「免費的」,使用者在網路上就可以抓到 Linux 的原始程式碼,隨心所欲的與更改 Linux 的原始程式,在網際網路的日漸盛行以及 Linux 開放自由的版權之下,吸引了無數電腦高手投入開發、改善 Linux 的核心程式,使得 Linux 的功能日見強大,所以今日我們可以在網路上免費下載 Linux 使用,或者花很少的一點費用就可以取得 Linux 光碟,這都是因為 Linux 是 GPL 版權的緣故。
除了核心程式以外,一個作業系統還需要其他的系統程式跟應用程式才有實用性,Linux 系統中常用的系統程式大部份是美國自由軟體基金會 (Free Software Foundation) 開發出來的軟體,而且也有不少機構或個人為 Linux 開發應用程式,這些程式一樣大多都是自由軟體,任何人都可以免費的在網路上取得,不過自行去取得這些程式再一一安裝非常不便,於是有些公司或團體就會去搜集、整合 Linux 上的程式,把「核心-系統程式-應用程式」總合起來構成一個完整的作業系統,讓一般使用者可以簡便的安裝完整個系統,這就是所謂的「安裝套件」(distribution),我們一般講的 Linux 系統便是針對這些安裝套件而言,同樣是 Linux 系統,卻分成不同公司、機構整合出來的不同安裝套件,這就是大家常常在網路上看到 Linux 有那麽多「種」的原因。
Linux 具有 Unix 系統的程式介面跟操作方式,也繼承了 Unix 穩定有效率的特點。網路上安裝 Linux 的主機連續運做一年以上而不曾當機、不必關機是稀鬆平常的事,不過 Linux 卻不像一般 Unix 要負擔龐大的版權費用,也不需要在專屬的昂貴硬體上才可以使用;Linux 可以在一般的 i386 PC 上執行,效能又高,自然而然的接收了過去幾十年來在 Unix 上累積的程式資源跟使用者,加上 GPL 的版權允許大家自由散 Linux 的原始碼,並針對自己的需求修改程式,使得 Linux 在目前已經成為非常受人歡迎的一個多人多工、免費、穩定、效率高、可以在包括 i386、Sparc、Alpha、Mips、PPC 等眾多不同電腦系統平台上執行的作業系統
另外,虛機團上產品團購,超級便宜
H. 在LINUX下怎樣使用COM組件
COM組件技術在Linux C++下的使用例子
COM的介面
一. 介面概念的出現
承接COM的目的,現在需要將重用的COM對象相互關聯在一起,那麼有什麼好方法呢?
(1)OO中使用public成員來讓外界和內部對象進行數據交互。COM中更進一步,只能使用public的成員函數。因為直接訪問對象內存不利於實行低耦合的模型,所以數據的交互都應該使用函數調用。
(2)一個COM對象可以提供多個函數供外部調用,這是很自然的。
(3}類似於OO中的多態,一個函數可以被多個COM對象實現,這樣調用方可以方便統一的實現所需的功能。
在C++中,我們用public成員函數來提供對外介面,用虛函數來實現多態。因此,對COM的要求,實際上就是需要一個虛基類,其定義了一組函數,然後COM類來繼承這個基類,從而也擁有了這組函數。而當COM類要有多個供外界調用的函數時,可以把這些函數分別定義在一些虛基類中,然後再用多重繼承的方法使COM類擁有這些函數。
盡管對每個函數都去定義一個虛基類也毫無不可,但很多時候這樣分散並不利於管理這些函數。因此常常把一組功能有關聯的函數合並在一個虛基類裡面。
這個只擁有一組虛函數的基類就是COM中的介面,其目的是定義COM對象被訪問的方法。每個介面都被一個GUID標識,稱為IID。
二. 介面的本質
如果把C++描述轉化成二進制代碼的話,就會發現介面本質上就是vtable,位於COM對象的開頭,指向一組函數指針。那麼為什麼是介面而不是單個函數被GUID表識,從而能夠被准確定位呢?
還是參考C++編寫的COM對象在內存中的二進製表示吧。此時其開頭是一列指針,分別對應於多重繼承而來的各個介面,然後每個指針指向一個函數指針數組,就是對應於各個介面的成員函數。因此,介面和對象在內存中是平級的!C++實現多重繼承時只不過是羅列了多個虛函數表,然後調用函數時再根據具體使用的指針類型,給指向對象的指針加上某個偏移量得到該類型對應的虛函數表,再找到具體的函數。顯然指針在介面這一層時可以很自如的通過偏移得到其它的介面指針以及對象指針——而一旦得到具體函數指針後,就很難回頭了。
COM規定了一個函數QueryInterface(),用來得到介面的指針。並把QueryInterface()放入介面類IUnknown中,而且規定所有的介面都要從IUnknown繼承,換句話說,所有的介面都要實現IUnknown類定義的那幾個函數。QueryInterface()的引入可以讓調用方在使用COM對象時,能夠在COM對象提供的介面之間自由的來回切換。當然,正如上面所述,其本質只是指向介面的指針做了偏移而已。
三. 介面的使用方法
首先,所有COM對象的介面都繼承自IUnknown,而IUnknown中是有QueryInterface()函數的。
再次,COM對象的開頭就是第一個介面的vtable,所以指向COM對象的指針同時也是指向第一個介面的指針。並且,由於介面都是繼承自IUnknown,因此這個指針也一定是指向IUnknown的指針。這樣一來的話就能夠順利調用QueryInterface(),得到某個介面的指針了。
然後,不管任何時候,只要有某介面的指針,就可以接著用QueryInterface()來得到該COM對象擁有的其它介面指針。
類廠以及COM對象的構造
二. 類廠概念的引入
類廠(ClassFactory)這個名詞其實有點迷惑性,因為這個東西實際上應該叫對象工廠。類廠也是一個普通的COM對象,它有一個特殊的介面IClassFactory,這個介面的一個函數CreateInstance()能夠生成COM對象,並返回其需要的介面。
如果把C++中的概念平移過來,就會發現類廠的作用本質上就是那個被C++編譯器隱藏了的new。在COM中沒有類定義,自然也沒有new,要想生成COM對象,只能靠COM類的規范。類廠就實現了從COM類規范到COM對象的過程。
當用C++實現COM的時候,往往在類廠也就是new出來一個對象,然後做一個QueryInterface()得到介面指針。表面上看,中間多了類廠這么一層有點多此一舉,實際上這里隱含了根據抽象的COM類在內存中生成COM對象的步驟,絕非可有可無的。
三. 類廠的返回值
在前面說過COM中以COM對象為單位實行重用,COM對象通過介面和外界交互,COM對象的介面之間可以通過偏移來實現跳轉。並且,從二進制上看,指向COM對象的指針就是指向COM對象繼承的第一個介面的指針。所以,在COM中並不需要一個指向COM對象的指針,而只需要指向該COM對象的某一個介面的指針。因此類廠最後是返回COM對象的一個介面指針來告訴用戶,這個COM對象已經生成了。當然,這個介面指針的表識(IID)需要用戶提供。
COM對象的調用
AddRef和Release
一. IUnknown介面
按照COM標准,所有的COM介面的前三個函數都必須是IUnknown介面的那三個函數:QueryInterface(),AddRef()和Release()。如果用C++表述的話,就是所有的COM介面都必須從IUnknown這個虛基類繼承而來。
QueryInterface()的作用前面已經說過了,是根據IID查詢當前COM對象是否有此介面,並返回介面指針。那麼AddRef()和Release()呢?
按照字面的意思,AddRef()的意思就是說增加當此介面被引用的次數,而Release()則是釋放。實際上也差不多就是這么回事……雖然Release()表面上看起來起一個SubRef()的名字能夠更加和AddRef()匹配一點。
二. COM對象的創建過程和引用計數的需求
如果按照一般的思想,COM對象被創建後,大家自由使用就是了,為了什麼非要引入AddRef()和Release()函數?其實這里涉及到的問題主要是COM對象的生存期問題。一個COM對象何時被誰創建?何時又被誰釋放呢?
最自然的回答肯定是需要時創建以實現應用,不需要時釋放以節約系統資源。但是這里實現就有很多問題:首先,按照前面所述,客戶並不真正的了解COM對象,它只能提供CLSID來定位COM對象,提供IID來查詢介面,然後能做的就是利用介面實現功能。在Windows的COM庫中,用CoCreateInstance()函數來封裝客戶端的調用,然後CoCreateInstance()根據CLSID在注冊表中找到實現該對象保存的文件,再根據調用方式的不同(進程內/進程外)將該文件裝載入內存,創建類廠,然後用類廠的CreateInstance()介面創建COM對象並返回IID指定的介面。這一連串的工作分的很細,主要的目的就是用中間層,比如COM庫函數和標准IClassFactory介面等隔開用戶和具體COM對象,實現更好地封裝。
既然如此,具體生成COM對象的並不是客戶端而是COM組件中和COM對象對應的類廠對象。因此,釋放或者說從內存中卸載COM對象的任務也不能是客戶端完成。而在COM組件中,類廠只管生成,那麼釋放的任務就只能交給COM對象自己完成了。
所以,最後的要求就變成了COM對象自己需要知道什麼時候能夠釋放自身,那麼就需要有一個量來表示現在到底又多少用戶在使用此COM對象,這就是引用計數了。
三. 引用計數的實現
實現引用計數的方法很簡單,用一個全局的變數來保存計數,多一個引用時加一,少一個引用時減一。COM規定當創建COM對象時先把計數從0加到1,然後加加減減,直到計數變到0,說明已經沒有用戶使用該COM對象,那麼這個就可以釋放資源了。
由於客戶端只能對介面操作,因此AddRef()和Release()需要保證能夠在任何介面下都能調用,包括IUnknown。這樣一來,這兩個函數和QueryInterface()並列成為IUnknown的三個成員也就順理成章了。
這里還有一些小問題。比如說是針對COM對象整體計數呢,還是針對各個介面計數?COM標准沒有硬性規定,但是作為COM對象的使用者,客戶端必須考慮到不同情況,所以必須是調用增加或減少引用的那個介面的AddRef()和Release()。
COM實現的技術,主要是C++的虛函數、多繼承以及動態鏈接庫(DLL)技術。
COM組件的實現:
項目代碼如下;
類廠頭文件
鏈表類廠 頭文件 ListClassFactory.h
/*************************************************************************
> File Name: ListClassFactory.h
> Created Time: 2016年09月12日 23時53分23秒 CST
************************************************************************/
#ifndef _LIST_CLASS_FACTORY_H
#define _LIST_CLASS_FACTORY_H
#include "../../ibasecom/IUnknown.h"
#include "../../ibasecom/IClassFactory.h"
class ListClassFactory : public IClassFactory
{
private:
ULONG m_cRef;
public:
ListClassFactory(){LogD("ListClassFactory: ","===ListClassFactory()===");}
~ListClassFactory(){LogD("ListClassFactory: ","====~ListClassFactory()=======");}
private:
virtual LONG QueryInterface(const IID& iid, void** ppv);
virtual ULONG AddRef();
virtual ULONG Release();
virtual IUnknown* CreateInstance(const IID& iid,void**ppv);
};
#ifdef __cplusplus
extern "C"
{
#endif
IUnknown* DllGetClassObject(const CLSID &clsid, const IID &iid, void **ppv);
IUnknown* (*g_CoCreate)(const IID& iid,void** ppv) = NULL;
#ifdef __cplusplus
}
#endif
#endif
Vector類廠 頭文件 VectorClassFactory.h
/*************************************************************************
> File Name: VectorClassFactory.h
> Created Time: 2016年08月26日 23時50分23秒 CST
************************************************************************/
#ifndef _VECTOR_CLASS_FACTORY_H
#define _VECTOR_CLASS_FACTORY_H
#include "../../ibasecom/IUnknown.h"
#include "../../ibasecom/IClassFactory.h"
class VectorClassFactory : public IClassFactory
{
private:
ULONG m_cRef;
public:
VectorClassFactory(){LogD("VectorClassFactory: ","===VectorClassFactory()===");}
~VectorClassFactory(){LogD("VectorClassFactory: ","====~VectorClassFactory()=======");}
private:
virtual LONG QueryInterface(const IID& iid, void** ppv);
virtual ULONG AddRef();
virtual ULONG Release();
virtual IUnknown* CreateInstance(const IID& iid,void**ppv);
};
#ifdef __cplusplus
extern "C"
{
#endif
IUnknown* DllGetClassObject(const CLSID &clsid, const IID &iid, void **ppv);
IUnknown* (*g_CoCreate)(const IID& iid,void** ppv) = NULL;
#ifdef __cplusplus
}
#endif
#endif
類廠實現文件 ListClassFactory.cpp
I. linux下COM口設置(minicom)
波特率對不對?用戶許可權對不對?
用最新版的putty試試,感覺putty的serial比minicom好用
J. Linux是否有類似於COM的組件對象模型
一系列策略性面向對象程序技術和工具的稱呼,其中主要的技術是組件對象模型(COM)...主要的工作就是組件,一個可以自足的在ActiveX網路(Windows,Mac,Linux)中任意運行...