为啥我这里没有错误?
Posted
技术标签:
【中文标题】为啥我这里没有错误?【英文标题】:Why don't I get an error here?为什么我这里没有错误? 【发布时间】:2012-09-19 01:32:21 【问题描述】:当我从同一个共享内存段读取和写入时,为什么无法获得 sigsegv 或其他东西?正常吗?为什么我没有收到任何错误?
(我知道我不叫 shmclt 或 shmdt)(:
#include <stdio.h>
#include <sys/shm.h>
#include <sys/stat.h>
int parent(char*);
int child(char*);
int main ()
int shmid = shmget (0xACA0E5,30*sizeof(char),
IPC_CREAT | S_IRUSR | S_IWUSR);
char *shared = (char*) shmat(shmid,0,0);
if (fork())
return parent(shared);
else
return child(shared);
int parent (char* shared)
while(1)
printf("F: %s",shared);
sprintf(shared,"FATHER \t%p\n",shared);
int child(char* shared)
while(1)
printf("C: %s",shared);
sprintf(shared,"CHILD \t%p\n",shared);
【问题讨论】:
您认为SIGSEGV
会出现的具体原因有哪些?
【参考方案1】:
是的,这种行为是完全正常的。操作系统不会阻止您覆盖共享内存段中自己的数据。如果你想避免这种情况,你需要引入某种 IPC 来同步对共享内存区域的访问。
【讨论】:
以上是关于为啥我这里没有错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 OleDbCommand 和 OleDbType.Date 不起作用,并且没有错误?