文章分类 -  linux高级编程

摘要:转载:http://blog.csdn.net/turkeyzhou/article/details/16847619 1、rlimit介绍 在Linux系统中,Resouce limit指在一个进程的执行过程中,它所能得到的资源的限制,比如进程的core file的最大值,虚拟内存的最大值等。 R 阅读全文
posted @ 2017-06-06 09:50 ren_zhg1992 阅读(1442) 评论(0) 推荐(0)
摘要:select/poll/epoll的区别?(此处参考牛客某大神的解析,此类题目大家需要自己多多查阅,总结)一般人就会回答,轮询和回调的区别,深一点就是fd最大个数限制,因为select内部是数组实现、poll内部是链表实现,所以select有最大fd限制,poll没有限制(系统资源假设无穷大的话)。 阅读全文
posted @ 2017-04-07 21:05 ren_zhg1992 阅读(117) 评论(0) 推荐(0)
摘要:一.select 和 poll的区别 select的两个限制: 1.一个进程能打开的最大文件描述符个数是有限的 1024 可以通过 unlimt -n number来修改 2.selcet 中的fd_set集合容量的限制(FD_SETSIZE),不可改变。 poll的限制: 1.一个进程能打开的最大 阅读全文
posted @ 2017-03-30 22:28 ren_zhg1992 阅读(514) 评论(0) 推荐(0)
摘要:select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作 IO多路复用之select总结 该函数准许进程指示内核等待多个事件中的任何一个发送,并只在有一个或多个事件发生或经 阅读全文
posted @ 2017-03-30 22:14 ren_zhg1992 阅读(154) 评论(0) 推荐(0)
摘要:代码: 阅读全文
posted @ 2017-03-30 17:11 ren_zhg1992 阅读(1030) 评论(0) 推荐(0)
摘要:代码: 阅读全文
posted @ 2017-03-30 16:33 ren_zhg1992 阅读(329) 评论(0) 推荐(0)
摘要:本章目标: 消息队列实现回射客户/服务器 模型框架如下: 服务器端代码: 客户端代码: 调试了一晚上,还是有问题。 1.未能在服务器端输出显示。换成printf()就行,fputs就不行。。 2.客户端可以接受到回显数据 但是只能回显两个字节。。。。。 满头雾水。。。不说了 上面这个模型中是有缺陷的 阅读全文
posted @ 2017-03-29 21:49 ren_zhg1992 阅读(138) 评论(0) 推荐(0)
摘要:父子进程的资源访问 6.1.内存资源 6.2.文件资源 案例: procmem.c 说明:子进程克隆整个内存区域(全局区,局部区,堆等整个内存区域), 子进程的虚拟地址重新映射。。。。(映射是独立的) 但内存区域指向不同的物理空间 尽管克隆,但内存独立. 不能相互访问. 多进程实现多任务,进程之间的 阅读全文
posted @ 2017-02-28 16:24 ren_zhg1992 阅读(340) 评论(0) 推荐(0)
摘要:1.父子进程的关系 独立的两个进程 互为父子关系 2.问题: 2.1.父进程先结束? 子进程就依托根进程init:孤儿进程 孤儿进程没有任何危害. 2.2.子进程先结束? 子进程会成为僵死进程. 僵死进程表面上不占用内存,CPU.但在进程任务管理树占用一个节点. 僵死进程造成进程名额资源浪费.(假如 阅读全文
posted @ 2017-02-28 16:18 ren_zhg1992 阅读(97) 评论(0) 推荐(0)
摘要:fork pid_t fork(); //1.创建进程 //2.新进程的代码是什么:克隆父进程的代码.而且克隆了执行的位置. //3.在子进程不调用fork所以返回值=0; //4.父子进程同时执行. 3.应用进程 使用fork创建新的进程有什么应用价值呢? 使用fork实现多任务.(Unix系统本 阅读全文
posted @ 2017-02-28 16:14 ren_zhg1992 阅读(89) 评论(0) 推荐(0)
摘要:exec系列函数: execl execlp 重点介绍 替换。。。。当前进程的代码空间中的代码数据 函数本身不创建新的进程。 int execl(const char*path,const char *arg,....);//变长参数 第一个参数:替换的程序, 第二个参数....:命令行 命令行格式 阅读全文
posted @ 2017-02-28 16:11 ren_zhg1992 阅读(280) 评论(0) 推荐(0)
摘要:poen函数允许一个程序将另一个程序作为新进程来启动,并可以传递数据给它或者通过它接收数据. 二、使用popen函数 1、popen函数和pclose函数介绍 有静就有动,有开就有关,与此相同,与popen函数相对应的函数是pclose函数,它们的原型如下: #include <stdio.h> F 阅读全文
posted @ 2017-02-28 16:08 ren_zhg1992 阅读(550) 评论(0) 推荐(0)
摘要:int system(const char*filename); 建立独立进程,拥有独立的代码空间,内存空间 等待新的进程执行完毕,system才返回.(阻塞) 案例:test.c 和 system.c 使用system调用一个程序。 test.c代码: system.c代码: 1.观察进程ID。 阅读全文
posted @ 2017-02-28 15:45 ren_zhg1992 阅读(341) 评论(0) 推荐(0)
摘要:pread/pwrite 原子性地定位搜索(seek)和执行I/O: (Single UNIX Specification 的 XSI扩展) #include ssize_t pread(int filedes, void *buf, size_t nbytes, off_t offset); 返回 阅读全文
posted @ 2017-02-28 15:06 ren_zhg1992 阅读(234) 评论(0) 推荐(0)
摘要:所有打开的文件都有一个当前文件偏移量(current file offset),以下简称为 cfo。cfo 通常是一个非负整数,用于表明文件开始处到文件当前位置的字节数。读写操作通常开始于 cfo,并且使 cfo 增大,增量为读写的字节数。文件被打开时,cfo 会被初始化为 0,除非使用了 O_AP 阅读全文
posted @ 2017-02-28 15:03 ren_zhg1992 阅读(156) 评论(0) 推荐(0)
摘要:1.认识内核对象不允许访问内核设备和内存, 但可以通过内核系统函数去访问. 对每个内核对象进行编号ID. 如果访问内核对象,只能通过ID. 编程模型: 申请得到一个ID 在内核系统函数中使用ID得到对应内核对象数据 2.怎么访问文件 使用函数,传递一个文件,系统打开文件,加载文件数据, 返回一个ID 阅读全文
posted @ 2017-02-28 14:45 ren_zhg1992 阅读(357) 评论(0) 推荐(0)
摘要:1.使用main的参数 int main(int args,char *argv[],char **arge) { } 命令行参数argv与环境行arge都是字符串数组. 约定:最后一个字符串是NULL或者0 2.在C的标准库提供:外部变量 extern char **environ; 3.修改获取 阅读全文
posted @ 2017-02-28 14:35 ren_zhg1992 阅读(88) 评论(0) 推荐(0)
摘要:头文件:#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>定义函数: int open(const char * pathname, int flags); int open(const char * pathname, i 阅读全文
posted @ 2017-02-20 16:50 ren_zhg1992 阅读(194) 评论(0) 推荐(0)
摘要:mmap(分配)/unmap(释放) 功能描述: mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。 基于文件的映射,在mmap和munmap执行过程的任何时刻 阅读全文
posted @ 2017-02-20 16:35 ren_zhg1992 阅读(1029) 评论(0) 推荐(0)
摘要:Linux进程级的内存管理 首先,我们可以了解一下一个进程的内核空间: 可以看到一个进程地址空间的主要成分为: 正文:这是整个用户空间的最低地址部分,存放的是指令(也就是程序所编译成的可执行机器码) 初始化数据段:这里存放的是初始化过的全局变量 未初始化数据段:这里存放的是未初始化的全局变量 Hea 阅读全文
posted @ 2017-02-20 16:19 ren_zhg1992 阅读(960) 评论(0) 推荐(0)