在 Unix 和它衍生的比如 Linux 系统中,一切都可以看做文件。虽然它仅仅只是一个泛泛的概念,但这是事实。如果有不是文件的,那它一定是正运行的进程。 要理解这点,可以举个例子,您的根目录(/)的空间充斥着不同类型的 Linux 文件。当您创建一个文件或向...
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。 本文讨论的背景是Linux环境下的network IO。 一 概念说明 在进行解释之前,首先要说明几个概念: - 用户空间和内...
Linux库类型 Linux下可以创建两种类型的库: 静态库(.a): 在链接期间被应用程序直接链接进可执行文件 动态链接库(.so): 动态库还分为两种用法: a) 应用程序运行期间链接动态库,但是在编译期间声明动态库的存在,也就是说这种动态库必须在编译时对编译器可见...
Git是软件开发和若干其他版本控制任务免费和开源的分布式版本控制系统。它被设计用来以应付一切从小到非常大的项目,基于速度,效率和数据完整性。 Linux用户主要通过命令行管理Git,不过,一些图形用户界面(GUI)Git 客户端可以促进Git在Linux桌面上的高效...
前言 之前有看到用很幽默的方式讲解Windows的socket IO模型,借用这个故事,讲解下linux的socket IO模型; 老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。 他们的信会被邮递员投递到他们小区门口的收发室里。这和Socket模型非常类似。...
改变操作系统对于任何人来说都是迈出的一大步,特别是当许多用户不确定操作系统究竟如何的时候,尤其如此。 但是,从Windows切换到Linux特别艰难。因为这两个操作系统有不同的假设和优先级,以及不同的做事方式。因此,新的Linux用户很容易混淆,因为他们使...
今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻。在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情。 在Linux操作系统中,普遍使用ELF格式作为 可执行程序 或者程序生成过程中的中间格式。ELF(Exe...
一个基于Linux操作系统的服务器运行的同时,也会表征出各种各样参数信息。通常来说运维人员、系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候,这些蛛丝马迹往往会帮助快速定位跟踪问题。 这里只...
简介 死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。...
我非常喜欢使用命令,因为它们比 GUI(图形用户界面)应用程序对 Linux 系统提供更多的控制,因此,我一直在寻找一些有趣的方法让 Linux 的操作变得简单好玩,主要是基于终端操作。 当我们发现使用 Linux 的新技巧时,尤其是像我这样的命令行极客,我们总会...