信息安全产品开发实践实验报告

信息安全产品开发实践实验报告

ID:19306320

大小:243.50 KB

页数:18页

时间:2018-09-30

信息安全产品开发实践实验报告_第1页
信息安全产品开发实践实验报告_第2页
信息安全产品开发实践实验报告_第3页
信息安全产品开发实践实验报告_第4页
信息安全产品开发实践实验报告_第5页
资源描述:

《信息安全产品开发实践实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、四川大学计算机学院、软件学院实验报告学号:_1043111034_姓名:_陈枝_专业:_软件工程_班级:_3班_第九周课程名称 信息安全产品开发实践实验课时2实验项目并发服务器(一)实验时间实验目的•服务器模型•多进程服务器模型实验环境 X86,WindowsXP,VMware5.0,RedHatLinux9.0实验内容(算法、程序、步骤和方法)试验题目1•自己编写程序实现远程控制系统中使用到函数popen功能;思路:使用管道pipe(intf_des[2])函数(参数f_des[0]用于读取管道,f_des[1]用于向管道写入数据),通过管道实现父子进程间通讯;步骤:1.创建管道;2.创建子

2、进程;3.在父进程中:关闭f_des[1],使用wait操作与等待子进程,然后将管道中的数据读出打印显示;4.在子进程:关闭f_des[0],将管道f_des[1]与标准输出进行重定向(dup2(f_des[1],STDOUT_FILENO)),然后调用execvp()函数执行程序中接收到的命令;试验题目2•修改远程控制服务器代码,使得服务器同时能够向多个用户提供服务数据记录和计算程序源码:题目1:FILE*mypopen(char*cmd,chartype){intpipefd[2];//管道描述符intpid_t;//进程描述符if(type!='r'&&type!='w'){printf

3、("myopen()flagerror/n");returnNULL;}if(pipe(pipefd)<0)//建立管道{printf("myopen()pipecreateerror/n");returnNULL;}pid_t=fork();//建立子进程if(pid_t<0)returnNULL;if(0==pid_t)//子进程中......{if(type=='r'){close(pipefd[0]);//此函数返回文件指针是用于读,因此,在子进程中应该将结果写入管道,//这样父进程返回的文件指针才能读,所以这里将读端关闭dup2(pipefd[1],STDOUT_FILENO);//

4、exec函数的执行结果将会通过标准输出写到控制台上,//但这里我们不需要在控制台输出,而是需要将结果返回,因此将标准输出重定向到管道写端close(pipefd[1]);}else{close(pipefd[1]);dup2(pipefd[0],STDIN_FILENO);close(pipefd[0]);}char*argv[]={cmd,NULL};if(execvp(cmd,argv)<0)//用exec族函数执行命令returnNULL;}wait(0);//等待子进程返回if(type=='r'){close(pipefd[1]);returnfdopen(pipefd[0],"r"

5、);//由于程序需要返回的参数是文件指针,因此需要用fdopen函数将描述符打开,其返回值为相应的文件指针}else{close(pipefd[0]);returnfdopen(pipefd[1],"w");}}题目2:#include#include#include#include#include#include#include#definePORT8900#defineBUFSIZE2048voidprocesschild(intc

6、lientsoket);FILE*mypopen(char*cmd,chartype){intpipefd[2];//管道描述符intpid_t;//进程描述符if(type!='r'&&type!='w'){printf("myopen()flagerror/n");returnNULL;}if(pipe(pipefd)<0)//建立管道{printf("myopen()pipecreateerror/n");returnNULL;}pid_t=fork();//建立子进程if(pid_t<0)returnNULL;if(0==pid_t)//子进程中......{if(type=='r')

7、{close(pipefd[0]);//此函数返回文件指针是用于读,因此,在子进程中应该将结果写入管道,//这样父进程返回的文件指针才能读,所以这里将读端关闭dup2(pipefd[1],STDOUT_FILENO);//exec函数的执行结果将会通过标准输出写到控制台上,//但这里我们不需要在控制台输出,而是需要将结果返回,因此将标准输出重定向到管道写端close(pipefd[1]);}els

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

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

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