当前位置: 首页 > news >正文

北京网站建设华网天下科技建设网站的基本流程是什么

北京网站建设华网天下科技,建设网站的基本流程是什么,织梦配置手机网站,移动商城积分兑换一【实验目的】 1.理解进程间通信原理#xff1b; 2.掌握进程中信号量、共享内存、消息队列相关的函数的使用#xff1b; 3.支撑网络空间安全专业的专业核心能力、综合创新能力。 二【实验要求】 以下每个实验均要求#xff1a; 1.“实验源代码”处#xff1a;粘贴所编写…一【实验目的】 1.理解进程间通信原理 2.掌握进程中信号量、共享内存、消息队列相关的函数的使用 3.支撑网络空间安全专业的专业核心能力、综合创新能力。 二【实验要求】 以下每个实验均要求 1.“实验源代码”处粘贴所编写的程序源码务必添加关键语句的注释 2.“实验结果”截图包括编写的程序和运行结果粘贴到“实验结果”下方截图需看到本人的名字及学号 3.有“讨论”的题目请务必认真回答 三【实验内容】 4-1 编写程序实现以下功能 利用匿名管道实现父子进程间通信要求 父进程发送字符串“hello child”给子进程 子进程收到父进程发送的数据后给父进程回复“hello farther” 父子进程通信完毕父进程依次打印子进程的退出状态以及子进程的pid。 【源代码】 4-2 编写程序实现以下功能利用匿名管道实现兄弟进程间通信要求兄进程发送字符串“This is elder brother pid is (兄进程进程号)”给弟进程弟进程收到兄进程发送的数据后给兄进程回复“This is younger brother pid is(第进程进程号)” 实验步骤父进程先创建一个子进程这个就是兄进程 然后通过判断进入父进程中然后再次创建一个进程 这个进程就是弟进程 父进程先创建一个子进程这个就是兄进程 然后通过判断进入父进程中然后再次创建一个进程 这个进程就是弟进程。 【源代码】 4-3 编写程序实现以下功能 利用有名管道文件实现进程间通信要求 写进程向有名管道文件写入10次“hello world” 读进程读取有名管道文件中的内容并依次打印。 【源程序】 4-4 编写代码完成以下功能 创建共享内存写进程通过键盘不断向内存写入“hello world” 如果结束写操作则通过键盘输入“end” 读进程从共享内存读取数据并打印。直到读到“end”为止。 【源程序】 4-5 编写代码完成以下功能 进程A向消息队列发送消息“helloworld” 进程B从消息队列读取消息并打印。 进程C向消息队列发送“自己在姓名” 进程D从消息队列中取出姓名字符串并打印 消息队列也叫报文队列是一个消息的链表。可以把消息看作是一个记录具有特定的格式以及优先级。对消息队列具有写权限的进程可以按照一定的规则向消息队列中添加消息而对消息队列具有写权限的进程可以从消息队列中读走消息。和管道相似的是消息一旦从消息队列中被读走则消息队列中便不在存在此条消息。 补充知识IPC消息队列的缺省最大数为16每个消息缺省最大值为8192字节队列中的最大值缺省为16384字节每个消息队列都有其对应的属性信息存储在struct_msqid_ds结构体中。每个消息队列都有一个对应的id标识消息队列的唯一性。 【源程序】 4-6选做 在文件读写代码commu-file-server.c和commu-file-client.c的基础上编写程序实现使用信号量机制来协调读、写进程对文件的访问。 【源程序】 commu-file-server.c #include fcntl.h #include stdio.h #include stdlib.h #include string.h #include time.hmain(int argc, char * argv[]) {int fd;time_t now;char * message;if(argc!2){printf(errror usage!\nusage: server filename\n);exit(1);}if((fdopen(argv[1],O_CREAT|O_WRONLY|O_TRUNC,0644))-1){perror(open);exit(1);}while(1){//time:获得时间参数ctime:将时间转换为字符串time(now);//获取当前日历时间从1970-01-01 00:00:00到现在的秒数返回值存储在变量nowmessagectime(now);//返回带格式的日期和时间信息if((lseek(fd,0,SEEK_SET))-1){perror(lseek);exit(1);}if(write(fd,message,strlen(message))-1){perror(write);exit(1);}sleep(1);} }commu-file-client.c #include stdio.h #include stdlib.h #include fcntl.hmain(int argc, char *argv[]) {int fd,len;char buf[128];if(argc!2){printf(error usage!\nusage: client filename);exit(1);}if((fdopen(argv[1],O_RDONLY))-1){perror(open);exit(1);}while((lenread(fd,buf,128))0){write(1,buf,len);}close(fd); }附录 Linux下进程通信相关函数有 信号量 信号量又称为信号灯它是用来协调不同进程间的数据对象的而最主要的应用是前一节的共享内存方式的进程间通信。要调用的第一个函数是semget用以获得一个信号量ID。 int semget(key_t key, int nsems, int flag); key是IPC结构的关键字flag将来决定是创建新的信号量集合还是引用一个现有的信号量集合。nsems是该集合中的信号量数。如果是创建新 集合一般在服务器中则必须指定nsems如果是引用一个现有的信号量集合一般在客户机中则将nsems指定为0。 semctl函数用来对信号量进行操作。 int semctl(int semid, int semnum, int cmd, union semun arg); 不同的操作是通过cmd参数来实现的在头文件sem.h中定义了7种不同的操作实际编程时可以参照使用。 semop函数自动执行信号量集合上的操作数组。 int semop(int semid, struct sembuf semoparray[], size_t nops); semoparray是一个指针它指向一个信号量操作数组。nops规定该数组中操作的数量。 ftok原型如下 key_t ftok( char * fname, int id ) fname就是指定的文件名(该文件必须是存在而且可以访问的)id是子序号虽然为int但是只有8个比特被使用(0-255)。 当成功执行的时候一个key_t值将会被返回否则 -1 被返回。 共享内存 共享内存是运行在同一台机器上的进程间通信最快的方式因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区其余进程对这块内存区进行读写。首先要用的函数是shmget它获得一个共享存储标识符。 #include sys/types.h #include sys/ipc.h #include sys/shm.h int shmget(key_t key, int size, int flag); 当共享内存创建后其余进程可以调用shmat将其连接到自身的地址空间中。 void *shmat(int shmid, void *addr, int flag); shmid为shmget函数返回的共享存储标识符addr和flag参数决定了以什么方式来确定连接的地址函数的返回值即是该进程数据段所连接的实际地址进程可以对此进程进行读写操作。 断开共享内存连接 与shmat函数相反shmdt是用来断开与共享内存附加点的地址禁止本进程访问此片共享内存 函数原型 int shmdt(const void *shmaddr) 函数传入值 shmaddr连接的共享内存的起始地址 函数返回值 成功0 出错-1错误原因存于error中 附加说明 本函数调用并不删除所指定的共享内存区而只是将先前用shmat函数连接attach好的共享内存脱离detach目前的进程 错误代码 EINVAL无效的参数shmaddr。 消息队列 消息队列就是一个消息的链表。可以把消息看作一个记录具有特定的格式以及特定的优先级。 1.创建新消息队列或取得已存在消息队列 原型int msgget(key_t key, int msgflg); 参数 key键值可以指定也可以由函数ftok生成。 msgflgIPC_CREAT值若没有该队列则创建一个并返回新标识符若已存在则返回原标识符。  IPC_EXCL值若没有该队列则返回-1若已存在则返回0。 2.向队列读/写消息 原型 msgrcv从队列中取用消息 ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); msgsnd将数据放到消息队列中 int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); 参数 msqid消息队列的标识码 msgp指向消息缓冲区的指针此位置用来暂时存储发送和接收的消息 msgsz消息的大小。 msgtyp从消息队列内读取的消息形态。如果值为零则表示消息队列中的所有消息都会被读取。   msgflg用来指明核心程序在队列没有数据的情况下所应采取的行动。 3.设置消息队列属性 原型int msgctl ( int msgqid, int cmd, struct msqid_ds *buf ); 参数msgctl 系统调用对 msgqid 标识的消息队列执行 cmd 操作系统定义了 3 种 cmd 操作 IPC_STAT , IPC_SET , IPC_RMID IPC_STAT : 该命令用来获取消息队列对应的 msqid_ds 数据结构并将其保存到 buf 指定的地址空间。 IPC_SET : 该命令用来设置消息队列的属性要设置的属性存储在buf中。 IPC_RMID : 从内核中删除 msqid 标识的消息队列。
http://www.huolong8.cn/news/150975/

相关文章:

  • 宝安网站设计最好的公司wordpress 发布模块
  • 怀柔区企业网站设计机构提供织梦cms网站地图
  • 青海旭云网站建设帝舵手表网站
  • 新乡专业的网站建设公司重庆一次可以备案多少个网站
  • 网站优化 套站用wordpress做网站页面显示404
  • 长沙网站推广有哪些啊网站数据库连接不上的常见问题
  • 网站建设开题报告pptwordpress title description
  • 网站流程表中国最好的影视后期培训学校
  • 支持付费下载系统的网站模板或建站软件学做饼干的网站
  • 请人做网站谁来维护手机访问跳转手机网站
  • 上海专业做网站公司电话asp做的网站
  • 备案信息如何上传的网站上手机版网站建设费用清单
  • 建网站有什么用二维码扫描
  • 用阿里云做网站注意事项苏州企业网页制作
  • 网站被k是怎么回事wordpress近期文章怎么显示时间
  • 门户网站ui设计网站建设教程步骤
  • 深圳网站建设网络推广制作网页链接的软件
  • 网站再就业培训班陕西网站开发公司地址
  • 婚礼做的好的婚庆公司网站金川做网站公司
  • 京东的网站是哪家公司做的制作网页然后把文件上传
  • 福永网站建设多少钱自己的服务器如何做网站
  • 怎么在搜索引擎做网站登记广州做网站开发
  • 昆山 网站建设彩票网站建设与推广
  • 饲料行业怎么做网站开发cms网站系统
  • 石狮网站建设公司注册城乡规划师准考证打印时间
  • 做棋盘游戏辅助的网站装饰网站卧室做炕百度
  • 网站服务器 试用温州模板建站代理
  • 怎么做好邯郸网站建设php网站开发全程实例
  • html5做网站的总结wordpress ssh
  • 行业网站维护wordpress菜单手机显示下拉