Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用C语言编写两个程序,通过公共函数/代码利用共享内存_C_Linux_Gcc_Operating System_Shared Memory - Fatal编程技术网

如何用C语言编写两个程序,通过公共函数/代码利用共享内存

如何用C语言编写两个程序,通过公共函数/代码利用共享内存,c,linux,gcc,operating-system,shared-memory,C,Linux,Gcc,Operating System,Shared Memory,我有一个程序有矩阵乘法代码,另一个程序有矩阵乘法(和第一个程序一样)和加法程序。我想实现/实现公共矩阵乘法代码的共享内存页概念(这样,在4K页面中,只有一个乘法代码的副本加载到主内存中) 我该怎么做 我应该把它们作为共享库吗 或 我应该在一个单独的文件中声明和定义矩阵乘法和加法代码,然后创建共享库,然后使用共享库吗?这能保证只有一个乘法码拷贝加载到内存中吗 我在linux下使用gcc 非常感谢您的帮助 只需创建一个包含公共代码的共享库(.so)——这就是您所需要做的。查看一个非常类似的问题参见m

我有一个程序有矩阵乘法代码,另一个程序有矩阵乘法(和第一个程序一样)和加法程序。我想实现/实现公共矩阵乘法代码的共享内存页概念(这样,在4K页面中,只有一个乘法代码的副本加载到主内存中)

我该怎么做

我应该把它们作为共享库吗

我应该在一个单独的文件中声明和定义矩阵乘法和加法代码,然后创建共享库,然后使用共享库吗?这能保证只有一个乘法码拷贝加载到内存中吗

我在linux下使用gcc


非常感谢您的帮助

只需创建一个包含公共代码的共享库(.so)——这就是您所需要做的。查看一个非常类似的问题参见
man 3 shm_open
man 2 mmap
。基本上,您先shm_open(),然后使用mmap()获取文件描述符,例如,在使用strcpy()或其他方法访问它之前,可以使用ftruncate()获取文件描述符。