Debian 9 安装 Apche2 和 vsftpd

apache2

什么是 Apache HTTP Server

Apache HTTP Server Project 是致力于为现代操作系统(包括UNIX 和 Windows)提供和维护的一个开源 HTTP 服务项目。该项目发起于 1995 年,至今已有20+年的历史。

借助 Apache HTTP Server,我们可以在我们的计算机或服务器上快速部署一个高效、可用的 HTTP 服务。Apache2 是 Apache HTTP Server 的最新版本。

  • Apache官网:Link
阅读更多

Linux内核模块编程 HelloWorld

微内核和宏内核

微内核

内核中只有最基本的调度、内存管理。其他的比如驱动、文件系统等都是用户态的守护进程去实现的。比如Windows NT、OS X

优点是超级稳定,驱动等的错误只会导致相应进程死掉,不会导致整个系统都崩溃,做驱动开发时,发现错误,只需要kill掉进程,修正后重启进程就行了,比较方便。

缺点是效率低。典型代表QNX,QNX的文件系统是跑在用户态的进程,称为resmgr的东西,是订阅发布机制,文件系统的错误只会导致这个守护进程挂掉。

宏内核

简单来说,就是把很多东西都集成进内核,例如Linux内核,除了最基本的进程、线程管理、内存管理外,文件系统,驱动,网络协议等等都在内核里面。优点是效率高。缺点是稳定性差,开发过程中的bug经常会导致整个系统挂掉。做驱动开发的应该经常有按电源键强行关机的经历。

阅读更多

了解makefile

使用 gcc 命令可以很方便地在Linux下编译C源代码,但是,当我们的工程变大了之后,项目下面有很多 .c.h文件,各种依赖关系错综复杂。这时候,手工编译就不是那么划算了。makefile就是用于解决这个问题的。

阅读更多

gcc编译基本操作

假设我现在有3个文件,分别是:

  • mystrlen.c: 是我自己实现的一个计算字符串长度的算法函数。
  • mystrlen.h: 该算法的头文件。
  • test.c: main函数,里面有一些字符串需要调用上面的算法来计算长度

那么在 Linux 下,如何用 gcc 把 mystrlen.c 编译成动态链接库,方便 test.c 去使用呢 ?


阅读更多

Ubuntu的一些奇技淫巧

接触Linux越久,掉进莫名其妙的坑里就越多,于是我决定每遇到一个坑就记录下来,这样以后再踩的时候不至于爬不起来。

阅读更多