linux共享内存的示例程序

linux共享内存的示例程序,第1张

代码 5.1 中的程序展示了共享内存块的使用。

代码 5.1 (shm.c) 尝试共享内存

#include <stdio.h>

#include <sys/shm.h>

#include <sys/stat.h>

int main()

{

int segment_id

char* shared_memory

struct shmid_ds shmbuffer

int segment_size

const int shared_segment_size = 0x6400/* 分配一个共享内存块 */

segment_id = shmget(IPC_PRIVATE, shared_segment_size, IPC_CREAT|IPC_EXCL|S_IRUSR|S_IWUSR )/* 绑定到共享内存块 */

shared_memory = (char*)shmat(segment_id, 0, 0)

printf(shared memory attached at address %p\n, shared_memory)/* 确定共享内存的大小 */

shmctl(segment_id, IPC_STAT, &shmbuffer)

segment_size = shmbuffer.shm_segsz

printf(segment size: %d\n, segment_size)

sprintf(shared_memory, Hello, world.)/* 在共享内存中写入一个字符串 */

shmdt(shared_memory)/* 脱离该共享内存块 */

shared_memory = (char*)shmat(segment_id, (void*) 0x500000, 0)/* 重新绑定该内存块 */

printf(shared memory reattached at address %p\n, shared_memory)

printf(%s\n, shared_memory)/* 输出共享内存中的字符串 */

shmdt(shared_memory)/* 脱离该共享内存块 */

shmctl(segment_id, IPC_RMID, 0)/* 释放这个共享内存块 */

return 0

}

在Windows中安装Cgwin或minGW软件即可实现linux中程序到Windows中移植。

Cygwin是许多自由软件的集合,最初由CygnusSolutions开发,用于各种版本的MicrosoftWindows上,运行UNIX类系统。Cygwin的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上。Cygwin移植工作在WindowsNT、Windows2000、WindowsXP以及WindowsServer2003上比较好.

MinGW的库,可以跟Windows本地的MSVCRT库(WindowsAPI)一起工作。MinGW占用内存、硬盘空间都比较少,能够链接到任意软件,但它对POSIX规范的实现没有Cygwin库完备。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11747870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存