我是linux OS的新手。有人可以说如何使用linux工作。我不是在问C代码。很难理解它。谢谢
1。第一个程序使用shmget()创建共享内存区域并将其映射到其地址空间。然后它将“Hello”写入该共享内存区域。然后它等待,直到共享存储区中的第一个字节变为*。
2。第二个程序应该在第一个程序之后启动。它将第一个程序创建的共享内存区域映射到其地址空间,并读取字符串并将其打印到终端。然后它将共享内存区域的第一个字节更改为*。
答案 0 :(得分:1)
我认为这就是你要找的东西。
#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;
}
答案 1 :(得分:0)
所以基本上你问的是如何使用共享内存在两个程序之间交换数据。这是IPC的另一种形式,即进程间通信。
请参阅此链接以获取视频教程!