我真的很新的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