欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年完整word版,Linux程序设计参考答案 .pdf

    • 资源ID:34259946       资源大小:96.78KB        全文页数:10页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年完整word版,Linux程序设计参考答案 .pdf

    第1页扬州大学试题纸 -参考答案(20122013学年第 一 学期) 广陵学院计科 80901、80902 班(年)级课程 Linux 程序设计 (B )卷参考答案题目一二三四五总分得分阅卷人一、Linux 的 ps 命令可以得到当前运行的进程列表,执行如下命令:rootlocalhost nova# ps -elf F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 1 0 0 80 0 - 4840 poll_s 06:50 ? 00:00:01 /sbin/init 1 S root 2 0 0 80 0 - 0 kthrea 06:50 ? 00:00:00 kthreadd 1 S root 3 2 0 -40 - - 0 migrat 06:50 ? 00:00:14 migration/0 4 S rtkit 3401 1 0 81 1 - 42113 poll_s 06:51 ? 00:00:00 /usr/libexec/rtkit-daemon 0 S root 3404 3252 0 80 0 - 34311 poll_s 06:51 ? 00:00:00 pam: gdm-password 4 S root 4222 2144 0 80 0 - 24534 poll_s 06:57 ? 00:00:14 sshd: rootpts/0 4 S root 4224 4222 0 80 0 - 27107 wait 06:57 pts/0 00:00:02 -bash 输出信息中包含了进程的PID ,要求编写一个Shell 程序getpid.sh,用户输入getpid.sh sshd 后,将输出该进程的PID 。 (本程序大概2 到 5 行)#! /bin/bash $|grep - i sshd | gawk print $2 二、使用 SDL 多媒体函数库,编写一段程序,实现在屏幕上画一个圆及一个矩形(图形大小及颜色自定)。主要查看在作图之前,是否正确进行初始化:调用SDL_Init 函数,及设置绘图视口( view)的大小#include #include 得分得分学院_系_班级_学号_姓名_.装.订.线名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 第2页#include #define RADIUS 50 #define LENGTH 100 #define WIDTH 62 int main(int argc, char * argv) SDL_Surface *screen; if(SDL_Init(SDL_INIT_VIDEO) format, 255,255,0); Draw_Rect(screen, 300, 200, LENGTH, WIDTH, SDL_MapRGB(screen-format, 255,255,0); SDL_UpdateRect(screen, 0, 0, 0, 0); SDL_Delay(5000); return EXIT_SUCCESS; 三、编写一个程序,要求实现:主进程调用fork 函数创建两个子进程(为简化表述,分别用A 进程、 B 进程表示这两个进程) 。A、B 进程通过有名管道实现通信,其中A 进程向 B 子进程发送字符串“ABC ”后,退出。 B 进程收到该字符串后,在屏幕上打印该字符串,然后退出。主要检查学生是否能正确使用mkfifo 创建有名管道,以及读写管道是否能够正确设置。答案:得分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 第3页#include #include #include #include #include #include #include #define FIFONAME ./NamedFIFO int main(void) int fd; pid_t pidA,pidB; char buf8; pidA = fork(); if (pidA 0)/父进程pidB = fork(); if(pidB 0) fprintf(stdout,progress B create error!n); exit(0); else if(pidB = 0)/子进程 B 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - 第4页if(access(FIFONAME,F_OK) = -1) mkfifo(FIFONAME, 0666); fd = open(FIFONAME,O_RDONLY); if(read(fd,buf,3) = -1) perror(prosess B read faild!n); printf(recevice from A: %sn, buf); close(fd); exit(0); waitpid(pidA,NULL,0); waitpid(pidB,NULL,0); exit(0); 四、 POSIX 定义的 socket(套接字)可以实现两台计算机间通信。编写一段程序,实现采用套接字在两机间通信。本处只要求写出服务器端程序。主要考查学生有关socket 通信函数调用次序,服务器端要求的调用次序为:socket、bind、listen、accept、recv、send、close 。答案:#include #include #include #include #include #include #include #include 得分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - 第5页#include #define PORT 65510 #define LISTEN_NUMBER 10 int flag = 0; void *client_func(void *p) printf(come in thread!n); int socket_client_fd = *(int *)p); char buf100; while(1) recv(socket_client_fd,buf,sizeof(buf),0); fputs(buf,stdout); if(strncmp(buf,quit,4)=0) printf(exit!n); break; flag =1; pthread_exit(NULL); /* 客户端部分代码不需要*/ int main() int socket_fd; if(socket_fd = socket(PF_INET,SOCK_STREAM,0) = -1) perror(socket failed!n); exit(0); printf(socket ok!n); struct sockaddr_in server_sockaddr; server_sockaddr.sin_family = AF_INET; server_sockaddr.sin_port = htons(PORT); server_sockaddr.sin_addr.s_addr = INADDR_ANY; int val = 1; setsockopt(socket_fd,SOL_SOCKET,SO_REUSEADDR,&val,sizeof(int); bzero(&server_sockaddr.sin_zero,sizeof(server_sockaddr.sin_zero); if(bind(socket_fd,(struct sockaddr *)&server_sockaddr,sizeof(server_sockaddr) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - 第6页= -1) perror(bind failed!n); goto QUIT; printf(bind ok!n); if(listen(socket_fd,LISTEN_NUMBER) = -1) perror(listen failed!n); goto QUIT; printf(listenning.n); int socket_client_fd; struct sockaddr_in client_sockaddr; socklen_t addr_len = sizeof(client_sockaddr); char input10; pthread_t tid; int err; if(socket_client_fd = accept(socket_fd,(struct sockaddr *)&client_sockaddr,&addr_len) 0) perror(accept failed!n); goto QUIT; if(err = pthread_create(&tid,NULL,client_func,(void *)&socket_client_fd) !=0) fprintf(stdout,pthread create:%sn,strerror(err); goto QUIT2; /* 客户端部分代码不需要*/fcntl(fileno(stdin),F_SETFL,fcntl(fileno(stdin),F_GETFL)|O_NONBLOCK); while(1) if(fgets(input,sizeof(input),stdin)!= NULL) send(socket_client_fd,input,sizeof(input),0); if(strncmp(input,quit,4) = 0) pthread_cancel(tid); pthread_join(tid,NULL); goto QUIT; if(flag = 1) break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - 第7页 QUIT2: fprintf(stdout,exit!n); if(close(socket_client_fd) = -1) perror(close socket client failed!n); pthread_exit(NULL); /* 客户端部分代码不需要*/QUIT: if(close(socket_fd) = -1) perror(close socket failed!n); exit(0); exit(0); 五、编写 Linux 字符设备驱动程序的一般方法。需要实现init_module 函数,在该函数中要求:1、分配设备号及子设备号;2、设置设备对外接口;3、如有需要,分配内存作为设备的缓冲区;4、注册设备;需要实现cleanup_module 函数,该函数需要完成设备分配资源的释放。答案:#include #include #include #include #define BUFSIZE 4096 static struct dev_t dev_id; int count; 得分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - 第8页 char *name; struct cdev dev; char bufBUFSIZE; int len; my_dev = .count = 1, .name = my_dev_id, .buf = hello charn, .len = 11, ; static ssize_t my_read(struct file *filp, char _user *buffer, size_t size, loff_t *off) int ret; size = min(size, (size_t)(my_dev.len - *off); if (size = 0) return 0; ret = copy_to_user(buffer, my_dev.buf + *off, size); if (ret != 0) return -1; *off += size; return size; static ssize_t my_write(struct file *filp, const char _user *buffer, size_t size, loff_t *off) int ret; size = min(size, (size_t)BUFSIZE); ret = copy_from_user(my_dev.buf, buffer, size); if (ret != 0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - 第9页 return -1; my_dev.len = size; *off = size; return size; static int my_open(struct inode *inode, struct file *filp) return 0; static int my_release(struct inode *inode, struct file *filp) return 0; static struct file_operations fops = .owner = THIS_MODULE, .read = my_read, .write = my_write, .open = my_open, .release = my_release, ; static int _init my_init(void) int ret; my_dev.dev_id = MKDEV(93, 0); ret = register_chrdev_region(my_dev.dev_id, my_dev.count, my_dev.name); if (ret 0) printk(register_chrdev_region() failedn); goto register_chrdev_region_err; cdev_init(&my_dev.dev, &fops); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - 第10页 ret = cdev_add(&my_dev.dev, my_dev.dev_id, my_dev.count); if (ret 0) printk(cdev_add() failedn); goto cdev_add_err; return 0; cdev_del(&my_dev.dev); cdev_add_err: unregister_chrdev_region(my_dev.dev_id, my_dev.count); register_chrdev_region_err: return -1; static void _exit my_exit(void) cdev_del(&my_dev.dev); unregister_chrdev_region(my_dev.dev_id, my_dev.count); module_init(my_init); module_exit(my_exit); MODULE_LICENSE(GPL); MODULE_AUTHOR(ME); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -

    注意事项

    本文(2022年完整word版,Linux程序设计参考答案 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开