![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
乌鸦_在飞
这个作者很懒,什么都没留下…
展开
-
Ubuntu16.04编译Linux内核
本文介绍在Ubuntu中编译Linux内核并添加新的启动项信息。第一步:下载内核源码并解压内核源码可以在官网下载:点击打开链接笔者用的内核版本是4.14的。把下载好的内核源码放在/usr/src/kernel目录下,没有这个目录的话可以自己创建。通过以下命令把内核源码解压,后面跟的是源码文件名。tar xvJf xxxxxx.tar.xz第二步:配置编译选项配置编译选项有多种方法:(1)make...原创 2018-03-14 23:47:33 · 5217 阅读 · 0 评论 -
epoll讲解
实现I/O复用技术除了可以使用select,还可以使用epoll。先说一下select的缺点,每次调用完select之后,一般都会有一个循环,遍历全部文件描述符,找出发生事件的那一个,可见时间效率并不高。因此,select函数一般适用于服务器端接入者少,要求有兼容性的情况下。兼容性是因为各大操作系统都支持select函数。相反,epoll则可以将发生事件的所有文件描述符都集中在一起,因此遍历这个集...原创 2018-03-22 20:56:49 · 247 阅读 · 0 评论 -
select()函数用法
select()函数是实现服用服务器端的一种方法。这里介绍Linux环境下select()函数的用法,Windows下的大同小异。select函数的功能select函数可以同时监视多个文件描述符,并且可以监视三种事件。一旦某个文件描述符所指的对象发生了相应事件,就可以进行相应的处理。监视的三种事件:(1)是否有对象需要接受数据。(2)是否有对象需要传输数据。(3)是否有对象发生了异常。select...原创 2018-03-20 11:51:15 · 3281 阅读 · 0 评论 -
Linux下多线程服务器端的实现
Linux下多线程编程时,编译命令需要加上-lpthread选项。g++ test.cpp -o test -lpthread线程的创建线程具有单独的执行流,所以会有自己的main函数。创建线程的函数如下:int pthread_create(pthread_t * restrict thread,const thread_attr_t * restrict attr,void *(* start...原创 2018-03-27 15:00:36 · 347 阅读 · 1 评论 -
静态链接
链接就是指将多个目标文件链接在一起并最终形成一个可执行文件。两个示例源码:a.cextern int shared;int main() { int a=100; swap(&a,&shared);} b.cint shared=1;void swap(int *a,int *b) { int c; c=*a; *a=*b; *b=...原创 2018-11-15 20:39:05 · 2788 阅读 · 0 评论 -
动态链接(二)
5. 动态链接相关结构首先装载方面和静态链接下的装载基本无异,唯一不同的是装载完之后控制权交给动态链接器,而不是可执行文件的入口。系统加载完动态链接器之后将控制权交给动态链接器的入口地址,接着动态链接器进行一系列的初始化及链接工作,完成之后将控制权交给可执行文件的入口,开始执行。5.1 .interp段在动态链接的ELF可执行文件中,存在.interp段,专门说明需要用到的动态链接器的...原创 2018-12-05 15:04:02 · 386 阅读 · 0 评论