Linux Linux程式練習五

2021-09-07 06:57:36 字數 2801 閱讀 6031

題目:編寫兩個程序a和b,利用共享記憶體技術,a向共享記憶體寫字串,b將從共享記憶體中讀到的字串在螢幕上列印出來。

//

建立共享記憶體區

#include #include

#include

#include

#include

#include

#include

int main(int arg,char *args)

printf(

"建立共享記憶體區成功,共享記憶體區段識別符號是%d\n

",shmid);

return0;

}

//

向共享記憶體區寫入資料

#include #include

#include

#include

#include

#include

#include

int main(int arg, char *args)

int shmid = 0

;

int resid=0

; shmid = atoi(args[1

]);

//程序附加共享記憶體區

void * shmbuf =null;

shmbuf = shmat(shmid, 0, 0

);

if (shmbuf == -1

)

//資料寫入程序私有共享記憶體區

read(stdin_fileno, shmbuf, sizeof(char) * 1024

);

//關閉本程序私有共享記憶體區

resid=shmdt(shmbuf);

printf(

"shmdt()函式返回值是%d\n

",resid);

return0;

}

#include #include 

#include

//從共享記憶體區讀資料

#include #include

#include

#include

int main(int arg, char *args)

int shmid = 0

;

int resid = 0

; shmid = atoi(args[1

]);

//附加到共享記憶體區

void * shmbuf =null;

shmbuf = shmat(shmid, 0

, shm_rdonly);

if (shmbuf == -1

)

printf("%s

", shmbuf);

//關閉當前程序的共享記憶體區

resid =shmdt(shmbuf);

printf(

"shmdt()函式返回值是%d\n

", resid);

return0;

}

//

關閉共享記憶體區

#include #include

#include

#include

#include

#include

#include

int main(int arg,char *args)

int resid=0

;

int shmid=0

; shmid=atoi(args[1

]); resid=shmctl(shmid,ipc_rmid,0

); printf(

"返回值是%d\n

Linux Linux程式練習四

編寫兩個不同的可執行程式,名稱分別為a和b,b為a的子程序。在a程式中呼叫open函式開啟a.txt檔案。在b程式不可以呼叫open或者fopen,只允許呼叫read函式來實現讀取a.txt檔案。a程式中可以使用 fork與execve函式建立子程序 a程式 fork共享檔案識別符號 include...

C C 專項練習 五

1.在過載運算子函式時,下面 運算子必須過載為類成員函式形式 a b c d 答案 d 解析 我也是不太懂。別人的優質解析 只能使用成員函式過載的運算子有 new delete 2.c 裡面如何宣告const void f void 函式為c程式中的庫函式。a static c b extern c...

基本演算法練習五

這道題看上去還是蠻簡單的,我想到的就是字串替換。由於它說了字串不超過1000,那麼我在程式裡就直接建乙個char陣列,這樣的話能夠很方便的修改對應的元素。如果是用字串指標的話,字串是存在常量區在。沒有陣列之間修改方便。如下 這道題也是基本的迴圈判斷,就是需要設定乙個p個籃筐陣列,用來儲存裡面是不是有...