




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
注解:考试题型大体是:填空题、简答题、编程题 填空题:一般就是写一个函数有什么作用或者给你作用写个函数名,还有就是例如显示多少行代码什么的,就是某些参数的作用,填空分值不大! 简答题:下面整理的资料的蓝色字体一般是简答题! 编程题:把大体框架写出来就好,记住下面整理的结构体(绿色字体),就是只写个结构体也有分数,同时要写代码,不要空白,要不老是不好给分数啊! 其他整理的内容你们大体看一下,主要看看那个精简版的编程文档!考试不要带小抄,这次开监控器,严打!socket:sockaddr_in的地址结构:struct sockaddr_in short sin_family; /* Address family */unsigned short sin_port; /* Port number */struct in_addr sin_addr; /* Internet address */unsigned char sin_zero8; /* Same size as struct sockaddr */;socket、bind、listen、accept、connect、send、recv、close、setsockopt等函数的参数意义。1、函数原型 int socket(int domain, int type, int protocol);第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM、原始套接字SOCK_RAW(WinSock接口并不适用某种特定的协议去封装它,而是由程序自行处理数据包以及协议首部);第三个参数指定应用程序所使用的通信协议。此参数可以指定单个协议系列中的不同传输协议。在Internet通讯域中,此参数一般取值为0,系统会根据套接字的类型决定应使用的传输层协议。2、int bind(int socket, const struct sockaddr *address,socklen_t address_len);参数说明:socket:是一个套接字。address:是一个sockaddr结构指针,该结构中包含了要结合的地址和端口号。address_len:确定address缓冲区的长度。3、int listen(int lsn_fd, int backlog); backlog是侦听队列的长度,在内核函数中,首先对backlog作检查,如果大于128,则强制使其等于128。4、int accept(int s, struct sockaddr *addr, socklen_t *addrlen);参数addr是回传指针。存入的是接受的连接对端的地址信息。accept返回一个新的套接字描述符fd。5、int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);connect函数将使用参数sockfd中的套接字连接到参数serv_addr中指定的服务器。参数addrlen为serv_addr指向的内存空间大小。6、int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);参数: sock:将要被设置或者获取选项的套接字。level:选项所在的协议层。optname:需要访问的选项名。optval:对于getsockopt(),指向返回选项值的缓冲。对于setsockopt(),指向包含新选项值的缓冲。optlen:对于getsockopt(),作为入口参数时,选项值的最大长度。作为出口参数时,选项值的实际长度。对于setsockopt(),现选项的长度。7、ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);send解析sockfd:指定发送端套接字描述符。buff: 存放要发送数据的缓冲区nbytes: 实际要发送的数据字节数flags: 一般设置为0recv函数sockfd: 接收端套接字描述符buff: 用来存放recv函数接收到的数据的缓冲区nbytes: 指明buff的长度flags: 一般置为08、Closesocket在linux中,就是close。服务器、客户端之间使用socket进行文件传输的程序;signal & timer:sigaction、timeval、itimerval结构;struct sigaction void (*sa_handler)(int);sigset_t sa_mask;int sa_flags;void (*sa_restorer)(void); struct timeval _time_t tv_sec;_suseconds_t tv_usec; struct itimervalstruct timeval it_interval;struct timeval it_value; signal和sigaction函数的区别;(1) signal函数每次设置具体的信号处理函数(非SIG_IGN)只能生效一次,每次在进程响应处理信号时,随即将信号处理函数恢复为默认处理方式而sigaction函数设置后就一直有效,不会重置。(2)signal:在信号发生之后到信号处理程序中调用signal函数之间有一个时间窗口;在进程不希望某种信号发生时,它不能关闭该信号。sigaction:在信号处理程序被调用时,系统建立的新信号屏蔽字会自动包括正被递送的信号如何向自己和其他进程发送信号SIGINT(kill、raise);向进程发送指定信号 :#inlcude #include int kill(pid_t pid, int sig); 向自身发送指定信号: #include int raise(int sig); 信号集的清空、填充、判断成员等(sigemptysetsigfillsetsigaddsetsigismember);初始化信号集并清空 #include int sigemptyset(sigset_t *set); 初始化信号集并加入所有的信号 #include int sigfillset(sigset_t *set); 将指定信号加入到信号集中 #include int sigaddset(sigset_t *set, int signum); 查询某信号是否加入到了指定信号集中 #include int sigismember(const sigset_t *set, int signum); 建立定时器和查询定时器状态(alarm、setitimer、getitimer);设置定时器间隔时间 #include unsigned int alarm(unsigned int seconds); 返回值:之前定时器剩余的时间(秒)设置定时器 #include int setitimer(int which, const struct itimerval *new, struct itimerval *old); 返回值:设置成功返回0,失败返回-1获取指定类型的定时器 #include int getitimer(int which, struct itimerval *value); 返回值:成功返回0,失败返回-1可以建立哪几种定时器,返回的信号都是什么?#include Unsigned int sleep(unsigned ing secounds);返回值:剩余的时间(秒)memory:buddy算法、slab算法:buddy算法:是用来做内存管理的经典算法,目的是为了解决内存的外碎片。Buddy算法把所有的空闲页面分为10个块组,每组中块的大小是2的幂次方个页面, 每一组中块的大小是相同的,且这同样大小的块形成一个链表。slab算法:能够用合适的方法使得对象前后两次被使用时,在同一块内存或同一类内存空间,且保留了基本的数据结构,就可以极大的提高效率每个进程拥有的内存空间分别有那几个部分组成(p163页上):程序代码区、全局数据区(清零区)、堆区、栈区、内核空间malloc、free、mmap和munmap的定义及用法;申请内存空间分配 #include void *malloc(size_t size); 建立内存映射#include #include void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); bzero、memset和strcpy的作用和用法(给一个buffer赋值);两个进程通过mmap方法进行内存数据交换的例子(mmap1.c和mmap2.c);file:(exp/t.c)文件流函数(fopen、fclose、fseek、ftell、feof、fread、fwrite)和文件函数(open、creat、close、read、write)的区别和使用方法;1,fread是带缓冲的,read不带缓冲.2,fopen是标准c里定义的,open是POSIX中定义的.3,fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别.4,fopen不能指定要创建文件的权限.open可以指定权限.5,fopen返回指针,open返回文件描述符(整数).6,linux/unix中任何设备都是文件,都可以用open,read.如果文件的大小是8k。你如果用read/write,且只分配了2k的缓存,则要将此文件读出需要做4次系统调用来实际从磁盘上读出。如果你用fread/fwrite,则系统自动分配缓存,则读出此文件只要一次系统调用从磁盘上读出。也就是用read/write要读4次磁盘,而用fread/fwrite则只要读1次磁盘。效率比read/write要高4倍。如果程序对内存有限制,则用read/write比较好。都用fread 和fwrite,它自动分配缓存,速度会很快,比自己来做要简单。如果要处理一些特殊的描述符,用read 和write,如套接口,管道之类的系统调用write的效率取决于你buf的大小和你要写入的总数量,如果buf太小,你进入内核空间的次数大增,效率就低下。而fwrite会替你做缓存,减少了实际出现的系统调用,所以效率比较高。如果只调用一次(可能吗?),这俩差不多,严格来说write要快一点点(因为实际上fwrite最后还是用了write做真正的写入文件系统工作),但是这其中的差别无所谓。如何建立无名管道和有名管道(pipe、mkfifo);创建无名管道#include int pipe (int filedes2);创建有名管道#include #include int mkifo(const char *pathname,mode_t mode);打开一个文件读出内容并且写入另一个文件的程序;两个进程使用有名和无名管道进行通信的程序;IPC:(实验二的要求)函数shmget、shmat、shmdt、shmctl等函数的参数说明及使用;函数msgget、msgsnd、msgrcv、msgctl等函数的参数说明及使用;函数semget、semop、semctl等函数的参数说明及使用(P、V操作、信号量的创建撤销及赋初值的实现);一个进程通过共享内存和消息的方式向另一个进程传送一个字符串的程序;process:fork、wait和waitpad、exit和on_exit、exec族函数的参数及使用;在进程中创建一个子进程,使之执行一个外部命令,并且等待它结束的程序。user:(userctrl.c文件)passwd和group数据结构的内容;struct passwd char *pw_name; /* Username. */char *pw_passwd; /* Password. */uid_t pw_uid; /* User ID. */gid_t pw_gid; /* Group ID. */char *pw_gecos; /* Real name. */char *pw_dir; /* Home directory. */char *pw_shell; /* Shell program. */;struct groupchar *gr_name; /* Group name. */char *gr_passwd; /* Password. */gid_t gr_gid; /* Group ID. */char *gr_mem; /* Member list. */;根据用户ID和名字得到用户信息的方法:根据用户ID找到系统中某用户的详细信息 #include #include struct passwd *getpwuid(uid_t uid);根据用户名找到系统中某用户的详细信息 #include #include struct passwd *getpwnam(const char *name);根据用户组ID和名字得到用户组信息的方法:根据用户组ID找到系统中某用户组的详细信息 #include #include struct group *getgrgid(gid_t gid);根据用户组名找到系统中某用户组的详细信息 #include #include struct group *getgrnam(const char *name);书上用户操作的例程,要考察其中主要片段;shell:shell是什么,有什么作用,都有哪几个著名的shell;shell是:linux与用户交流的一种主要的渠道,采用字符界面的控制台形式,类似于windows系统中的命令提示符作用:shell不仅给用户提供一个一次输入单条命令的平台,还可以完成脚本的执行,以批量执行的方式处理一组命令。在脚本中完成条件分支、循环等动作。著名shell:bourne shell、Korn shell、C shellshell中判断一个数与另一个数的关系怎么写:(-eq(是否相等)、-ne(是否不等)、-lt(是否小于)、-le(是否小于等于)、-gt(大于)、-ge(大于等于)等);会用系统变量取参数、会用read和select给变量赋值(P69):read 参数 变量名t:设定超时时间-p设定提示信息select var in str1,str2 .,dobreakdone(var是变量名,str1,str2是备选选项)知道花括号、单/双引号和注释的用法:花括号:强制的整体标识单引号:取消所有的转义符、通配符、分隔符。双引号:取消通配符和分隔符的转义,但对于变量依然进行转义。编写对输入的数字进行分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注册会计师考试沟通能力试题及答案
- 2025年银行从业资格证独特视角试题及答案
- 证券投资流动性风险管理的试题及答案
- 剖析2024年项目管理专业人士考试内容试题及答案
- 2025年运用统计学分析市场趋势试题及答案
- 国际金融理财师考试新挑战试题及答案
- 微生物实验室的最佳实践与管理经验试题及答案
- 宁夏中卫市本年度(2025)小学一年级数学部编版能力评测(上学期)试卷及答案
- 市级课题申报书格式
- 2025年证券从业证考试教育实务试题及答案
- 中医内科学阳痿专家讲座
- ZL50装载机反转六连杆工作装置设计
- LY/T 2698-2016铁皮石斛杂交育种技术规程
- 综合性学习之对联-中考语文二轮复习
- 实验室生物安全程序文件
- 企业融资方式介绍课件
- 药品生产监督管理办法
- 福建省普通高中学生综合素质学期评价表
- 五年级下册数学课件 -4.1 用数对确定位置 ︳青岛版 (共20张PPT)
- 柏拉图分析案例
- 二衬带模注浆施工方案
评论
0/150
提交评论