shmget for linux in linux

时间:2014-10-22 04:46:12

标签: c linux ipc shared-memory

我是linux OS的新手。有人可以说如何使用linux工作。我不是在问C代码。很难理解它。谢谢
1。第一个程序使用shmget()创建共享内存区域并将其映射到其地址空间。然后它将“Hello”写入该共享内存区域。然后它等待,直到共享存储区中的第一个字节变为*。
2。第二个程序应该在第一个程序之后启动。它将第一个程序创建的共享内存区域映射到其地址空间,并读取字符串并将其打印到终端。然后它将共享内存区域的第一个字节更改为*。

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的另一种形式,即进程间通信。

请参阅此链接以获取视频教程!

https://www.youtube.com/watch?v=IFRbX8u6lB0