linux下c语言编程4-使用共享内存实现进程间通信

linux下c语言编程4-使用共享内存实现进程间通信

ID:1357696

大小:74.50 KB

页数:11页

时间:2017-11-10

linux下c语言编程4-使用共享内存实现进程间通信_第1页
linux下c语言编程4-使用共享内存实现进程间通信_第2页
linux下c语言编程4-使用共享内存实现进程间通信_第3页
linux下c语言编程4-使用共享内存实现进程间通信_第4页
linux下c语言编程4-使用共享内存实现进程间通信_第5页
资源描述:

《linux下c语言编程4-使用共享内存实现进程间通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、linux下C语言编程4-使用共享内存实现进程间通信共享内存的函数有以下几个:(1)intshmget(key_tkey,intsize,intshmflg),开辟或使用一块共享内存。(2)void*shmat(intshmid,constvoid*shmaddr,intshmflg),将参数shmid所指向的共享内存与当前进程连接。当使用某共享内存时,需要先使用shmat,达成连接。(3)intshmdt(constvoid*shmaddr),将先前用shmat连接的共享内存与当前进程解除连接。参数s

2、hmaddr为shmat返回的共享内存的地址。在完成对共享内存的使用后,需要使用shmdt解除连接。(4)intshmctl(intshmid,intcmd,structshmid_ds*buf),控制内存的操作。当cmd为IPC_RMID时,删除shmid所指的共享内存。这些函数的表头文件为,其详细参数请去网上搜索。下面给出一个使用共享内存实现进程间通信的例子:进程A开辟一块新的共享内存,进程B修改这个共享内存,进程C打印输出这个共享内存的内容,进程D删除

3、这个共享内存。进程BCD运行的命令格式为:命令共享内存ID,如./output123432。进程A代码如下:intmain(){intshmid;shmid=shmget(IPC_PRIVATE,SIZE,IPC_CREAT

4、0600);if(shmid<0){perror("shmgeterror");exit(1);}printf("createsharedmemoryOK.shmid=%d/n",shmid);return0;}进程B代码如下:intmain(intargc,char*argv[]

5、){intshmid;char*shmaddr;if(argc!=2){perror("argcerror/n");exit(1);}shmid=atoi(argv[1]);shmaddr=(char*)shmat(shmid,NULL,0);if((int)shmaddr==-1){perror("shmaterror./n");exit(1);}strcpy(shmaddr,"hello,world!");shmdt(shmaddr);return0;}进程C代码如下:intmain(intargc

6、,char*argv[]){intshmid;char*shmaddr;if(argc!=2){printf("argcerror/n");exit(1);}shmid=atoi(argv[1]);shmaddr=(char*)shmat(shmid,NULL,0);if((int)shmaddr==-1){perror("shmaterror./n");exit(1);}printf("%s/n",shmaddr);shmdt(shmaddr);return0;}进程D代码如下:intmain(int

7、argc,char*argv[]){intshmid;if(argc!=2){perror("argcerror/n");exit(1);}shmid=atoi(argv[1]);shmctl(shmid,IPC_RMID,NULL);return0;}linux下C语言编程5-多线程编程Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,编译需要在后面加-lpthread。关于多线程,主要有以下几个过程:1,创建线程2,各

8、个线程的执行3,等待线程的结束涉及的线程函数主要有:1,intpthread_create(pthread_t*restricttidp,constpthread_attr_t*restrictattr,void*(*start_rtn)(void), void*restrictarg);函数有4个参数:第一个参数为指向线程标识符的指针。第二个参数用来设置线程属性。第三个参数是一个函数指针(有关函数指针,看这里),指向线程运行函数的起始地址。最后一个参数是函数指针所需要的参数。注意:pthread_cr

9、eate函数返回0表示成功。另外如果函数指针需要多个参数的话,就将这些参数做成某个结构体,作为第4个参数。如果有返回值的话,也可将返回值的指针回写到第4个参数中。2,pthread_join()等待一个线程的结束。pthread_exit()用于线程退出,可以指定返回值,以便其他线程通过pthread_join()函数获取该线程的返回值。线程的应用:并行数据库的查询假设我们有3台计算机A,B,C,每台均安装PG数据库,通过网络连接。我们可以

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。