我真的很新的linux操作系統。有人可以說如何用linux做這項工作。我不問C代碼。很難理解它。謝謝
1.第一個程序使用shmget()創建共享內存區域並將其映射到其地址空間。然後它將「Hello」寫入該共享內存區域。然後等待共享內存區域中的第一個字節變成*。
2.第二個程序應該在第一個程序之後開始。它將由第一個程序創建的共享內存區域映射到其地址空間並讀取該字符串並將其打印到終端。然後它將共享內存區域的第一個字節更改爲*。適用於IPC的shmget linux的
-2
A
回答
0
我認爲這是你在找什麼。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/shm.h>
#define SHSIZE 100
int main(){
int shmid;
char *shm;
shmid = shmget(9876, SHSIZE, IPC_CREAT | 0660);
shm = shmat(shmid, NULL, 0);
memcpy(shm, "Hello", 5);
while(*shm != '*'){
sleep(1);
}
return 0;
}
而且客戶端:
#include <stdio.h>
#include <sys/shm.h>
#define SHSIZE 100
int main(){
int shmid;
char *shm,*s;
shmid = shmget(9876, SHSIZE, IPC_CREAT | 0660);
shm = shmat(shmid, NULL, 0);
for(s = shm; *s != 0; s++){
printf("%c", *s);
}
printf("\n");
*shm = '*';
return 0;
}
0
所以基本上你問如何使用共享內存在兩個程序之間交換數據。這是另一種形式的IPC或進程間通信。
請參閱此鏈接的視頻教程!
+1
儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – 2014-10-22 07:08:11
相關問題
- 1. Linux shmget()函數在c + +
- 2. 適用於Android的Linux on Linux
- 3. Linux IPC選擇?
- 4. 簡單的Linux IPC問題
- 5. 一種適用於我的情況的IPC形式
- 6. 當使用「shmget」分配大塊內存時,System V IPC如何處理碎片?
- 7. PYTHONPATH不適用於GNU/Linux上的sudo(適用於root)
- 8. EEXIST上shmget的
- 9. NLog不適用於Linux
- 10. 適用於Linux的SQLYog-Like MySQL GUI?
- 11. 適用於Linux的Apple iOS IDE?
- 12. 適用於Linux 2.6.39的工具編譯
- 13. 適用於Linux的Windows服務 - Apache?
- 14. 適用於Linux/Ubuntu的iPhone測試儀
- 15. 適用於Linux的JavaFX原生包
- 16. 適用於Linux的Mono兼容CMS
- 17. 適用於Linux的Java分析工具
- 18. 適用於Windows的C++ linux界面?
- 19. 適用於Ubuntu和Linux的IronPython IDE
- 20. 適用於Linux的CAN協議棧
- 21. Nuget適用於Linux上的.net核心
- 22. jnetpcap適用於linux上的android開發
- 23. 適用於Linux的COleDateTime備選方案
- 24. 適用於Linux的BGI圖形?
- 25. 適用於Java的Linux shell作業API
- 26. 哪個Emacs適用於Mac OS X?...適用於Windows?適用於Linux?
- 27. 廣播IPC在Linux上
- 28. Linux IPC:無法刪除msqid_ds
- 29. Linux中的共享內存(ipc)
- 30. Wildfly EJB查找適用於Linux,但不適用於Windows
還有,你試過嗎?它是如何工作的?它怎麼沒用?你能更具體地說明你遇到什麼問題嗎?您*已*閱讀涉及的系統調用的手冊頁面?你*有*查找和搜索其他例子(有很多)? – 2014-10-22 04:48:42
是的,我讀過很多這些。第一個程序和第二個程序意味着他們必須在單獨的c程序中嗎?或者它是指同一個C程序中的兩個進程? – 2014-10-22 04:52:13
那麼,這個作業提到了第一個和第二個「程序」,而不是「過程」。 – 2014-10-22 05:15:03