2017-08-30 109 views
0

我是c和Linux的新手,在我的c程序one.c中,我有一个变量x = 10存储在地址0x34.now,我不想要任何其他进程访问这个内存位置,除了one.c.no其他进程应该覆盖,或者可以访问这个位置......是否有任何系统调用支持这个?提前谢谢是否有任何系统调用阻塞内存

+0

我担心你必须为此使用共享内存。内存保护,虚拟化,分页......将阻止进程访问另一个进程内存。 –

+5

这是默认设置。请记住,Linux使用*虚拟内存*。一个进程中的内存地址在另一个进程中不必相同(即使进程是从同一个可执行文件创建的)。除非他们明确地共享内存,否则其他进程不应该能够访问另一个进程的内存。 –

+2

除非您采取措施以允许其他进程访问该变量,否则仅对于一个进程而言是唯一的。 –

回答

2

这就是操作系统的具体操作方式memory protection工作:

内存保护的主要目的是为了防止从 进程访问未分配给它的内存。这样可以防止进程中的某个 错误或恶意软件影响其他进程或操作系统本身。尝试访问无主内存导致 中出现硬件故障,称为分段故障或存储违规 异常,一般会导致进程异常终止。

几乎每一个通用操作系统今天都使用内存保护,所以你已经拥有它了。

相关问题