在C中创build共享内存

在C中创build共享内存,第1张

概述在C中创build共享内存

我在C中创build了下面的方法来创build共享内存段来存储计数器值。 但是我不能在这个段中存储数据。当我尝试打印计数器的值时,它给了我一个垃圾值。这个代码有什么问题?

CreateCounter() { key = ftok(".",'B'); shmCntID = shmget(key,COUNTER_SIZE,IPC_CREAT|0666); if(shmCntID == -1 ) { perror("shmget"); exit(1); } else { printf("Creating new Sahred memory sementn"); cntPtr = shmat(shmCntID,0); if(cntPtr == -1 ) { perror("shmat"); exit(1); } } }

这个方法在main方法里面调用如下。

int *cntPtr; int rowCnt; sem_t s; sem_t c; sem_t r; int main(int argc,int *argv[]) { int pID,pID2,pID3,i; CreateBuf1(); CreateBuf2(); CreateCounter(); Getinput(argv[1],*buf1Ptr); sem_init(&c,1); sem_init(&r,1); sem_init(&s,1); for( i = 0 ; i < 9; i++) { pID = fork(); if(pID < 0) { printf("Fork error !n"); } else if (pID == 0) break; } if(pID < 0) { printf("Fork error !n"); } else if (pID == 0) { sem_wait(&r); Grp1 (i,i); cntPtr+=rowCnt; sleep(1); sem_post(&r); sem_post(&c); exit(0); } else { wait(NulL); } pID2 = fork(); if(pID2 < 0) { printf("Fork error !n"); } else if (pID2 == 0) { sem_wait(&c); Grp2(9); cntPtr+=colCnt; sleep(1); sem_post(&c); exit(0); } else { wait(NulL); } // This space is to print the values.............. shmctl(shmBuf1ID,IPC_RMID,0); shmctl(shmBuf2ID,0); shmctl(shmCntID,0); return 0; }

NaCl和共享内存

如何获取文件的下一页/部分/视图,如果我使用MapVIEwOffile读取文件的一部分?

无root权限实现共享内存

一个用户崩溃时共享内存互斥?

C,如何在分叉进程上使用POSIX信号量?

用于由MPI创build的进程的共享内存访问控制机制

windows共享内存段

在windows下使用共享内存。 如何传递不同的数据

linux共享内存在哪里?

如何与用户空间共享linux内核内存(只读)

总结

以上是内存溢出为你收集整理的在C中创build共享内存全部内容,希望文章能够帮你解决在C中创build共享内存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1285599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存