亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2109 | 回復(fù): 3
打印 上一主題 下一主題

進(jìn)程之間共用的IPC通信資源的標(biāo)識問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-12-27 20:41 |只看該作者 |倒序瀏覽
1. linux/Unix進(jìn)程通信,包括共享內(nèi)存,消息隊列,信號量。主要問題是在兩個進(jìn)程之間通信
的時候,怎么確定進(jìn)程之間共用的IPC通信資源的標(biāo)識。

一種方法是在主進(jìn)程初始化的時候,規(guī)定好各個子進(jìn)程之間通信要用到的通信資源的標(biāo)識。如下面的偽代碼所
顯示的那樣, 可以定義好一個頭文件,在它里面事先規(guī)定好這些資源號(key).

key.h

key_t  key1 = 222, key2 = 333, key4 = 444;

#include "key.h"

void main()
{


        pid = fork();
       
       
        if (pid == 0)
        /* 第一個子進(jìn)程 */
        {
                shmget(key1, *, * );/msgget(key2, *, *);/semget(key3, *, *);
               

        }
        else
        {
                pid = fork();
               
                if (pid == 0);
                /* 第二個子進(jìn)程 */
                        {
                                shmget(key1, *, * );/msgget(key2, *, *);/semget(key3, *, *);
                        }
               
        }       

}
        當(dāng)然,主進(jìn)程中也可以使用IPC資源和兩個子進(jìn)程通信。這里是以從同一個主進(jìn)程派生出來的子進(jìn)程
通信作為示例.實際情況中肯定是不同的程序間通信.
        這個方法當(dāng)然可以工作,但是我覺得很不安全.而且不靈活.這些進(jìn)程(程序)只見需要在程序編碼上保持
一致(都需要包括相同的定義key值的頭文件),而且這樣做還有一個更致命的弱點,其他進(jìn)程也可能使用這個整數(shù)
作為另外的IPC資源的關(guān)鍵字.
        我知道有人建議是用ftok這個函數(shù):key_t ftok(const char *path, int id);通過在不同的進(jìn)程間調(diào)用
這個函數(shù),相同的參數(shù)會產(chǎn)生相同的key值,然后就可以通信.
       
        我不知道還有沒有別的方法,但是我覺得這個方法還是有比較大的限制,起碼需要不同的程序間要約定調(diào)
用相同的參數(shù).不知道還有沒有別的方法在不同進(jìn)程之間確定公用的進(jìn)程資源?
        在unix中有ipcs這樣的命令來獲取現(xiàn)在系統(tǒng)中的進(jìn)程通信的資源信息,不知道有沒有類似的API能提供這
樣的要求.

        不知道windows的剪貼板是怎么實現(xiàn)的,那么多不同的程序(進(jìn)程)間都能共用這個公用的資源.

論壇徽章:
0
2 [報告]
發(fā)表于 2005-12-27 21:24 |只看該作者
兩個進(jìn)程如果要使用同一個資源,事先至少要約定一個雙方都能同意的標(biāo)識,否則怎么通信呢?

當(dāng)然如果系統(tǒng)只有一個資源,比如剪貼板,那么就不用了,因為標(biāo)識等于是固定的,hard code的。

ipcs的主要功能是通過shmctl, semctl, msgctl函數(shù)來完成的

論壇徽章:
0
3 [報告]
發(fā)表于 2005-12-28 17:57 |只看該作者

回復(fù) 1樓 plscareme 的帖子

你想做什么啊, 有些東西不是你覺不安全就不安全的,
IPC中通常有三種方法產(chǎn)生關(guān)鍵字, 1, 指定關(guān)鍵字,2 公用頭文件,3 同一路徑名和ID
應(yīng)該就是這三種

請理解一下什么叫協(xié)議吧!! 程序間不約定,怎么通訊!?

招聘 : c/c++研發(fā)
論壇徽章:
0
4 [報告]
發(fā)表于 2005-12-29 09:30 |只看該作者
#define MSG_FILE "filefile"
key_t key;
if((key=ftok(MSG_FILE,'a'))==-1)
        {
                fprintf(stderr,"Creat Key Error:%s\a\n",strerror(errno));
                exit(1);
        }
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP