C语言 建立共享内存

Python014

C语言 建立共享内存,第1张

#include <stdio.h>

#include <malloc.h>

#include <string.h>

char *memory, *currentPointer

void ShareMemory( char function, char *a )

{

switch (function)

{

case 'c':

memory = ( char * )malloc( 65 * sizeof( char ) )

memory[64] = 0

currentPointer = memory

break

case 'r':

printf("%s", memory)

printf("\n")

break

case 'w':

strcpy( currentPointer, a )

while( *currentPointer != '\0' )

{

currentPointer++

}

break

case 'd':

free(memory)

break

default:

printf("wrong parameter!")

}

}

int main()

{

char *a = "aaaaa"

ShareMemory('c', a)

ShareMemory('r', a)

ShareMemory('w', a)

a = "bbbbb"

ShareMemory('w', a)

ShareMemory('r', a)

ShareMemory('d', a)

return 0

}

内存值变化:

#include<stdio.h>

/*

 * 低4个字节n x两个一起用的

 */

union u

{

int n

double x

} num

void main()

{

printf("sizeof(num) = %u\n", sizeof(num))//输出的是8也就是是double的大小

printf("%08X\n", &num)

num.n = 10         //8个字节中低4个字节赋值为10

num.x = 15.5       //8个字节赋值为15.5

printf("%d\n", num.n)

printf("%f\n", num.x)

}

共享内存用于进程之间通信,如果是多线程,用全局变量+信号量互斥就可以了呀?

非要用的话,一个进程用shmget创建共享内存区,然后用shmat连接共享内存进行访问

注意要配合信号量互斥,共享内存本身是没有同步机制的。