
Linux系统编程
AG_
这个作者很懒,什么都没留下…
展开
-
【Linux】环境变量详解
什么是环境变量环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。许多用户(特别是那些刚接触Linux的新手)发现这些变量有些怪异或者难以控制。其实,这是个误会:通过使用环境变量,你可以很容易的修改一个牵涉到一个或多个应用程序的配置信息。重要的例子下表罗列了一些Linux系统使用的变量并说明了它们的用处。在表格后面将列举一些变量例值。变量转载 2017-10-17 20:58:22 · 327 阅读 · 0 评论 -
【Linux】linux性能分析工具oprofile移植
一、内核编译选项make menuconfig[html] view plain copyspan style="font-size:18px">General setup---> [*] Profiling support *> OProfile system profilingspan>转载 2017-11-01 12:58:08 · 276 阅读 · 0 评论 -
【Linux】 技巧:让进程在后台可靠运行的几种方法
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。一、nohup/setsid/&场景:如果只是临时有一个命令需要长时间运行,什么方法能最转载 2017-11-01 13:04:20 · 251 阅读 · 0 评论 -
【Linux】GDB 调试 C++ 程序 core dump
摘要gdb 的一些常用命令, 及在程序发生段错误后如何通过调试 core dump 迅速定位到出错位置.不罗列一大堆命令了, 只是把碰到的/用过的整理一下, 以后再使用到新的命令, 再补充. 有几篇总结的比较好的文章可以参考: 《LINUX C/C++ GDB调试(概述)上》、《LINUX C/C++ GDB调试(概述)下》、《手把手教你玩转GDB(二)——Breakpoi转载 2017-11-01 13:06:10 · 591 阅读 · 0 评论 -
【Linux】sed用法详解
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般转载 2017-11-01 13:12:13 · 266 阅读 · 0 评论 -
【Linux】常用命令总结
shell :命令解释器 echo $SHELL cat /etc/shellstab: 补齐命令, 文件,目录作用: 减少用户输入, 减少出错的机会history: 查看历史命令 ctrl+p:上翻 ctrl+n: 下翻 上下箭头!! 上一个命令命令行上的快捷键:原创 2017-10-15 16:53:46 · 224 阅读 · 0 评论 -
【Linux】vim常用快捷键
vim: vimtutor三种模式:命令模式: 1 ZZ 2 gg=G 3 H J K L --单个字符的移动 w --一个单词的移动 0 --移动到光标所在行的头部 $ --移动到光标所在行的尾部 gg --移动到文件头部 G --移动到文件的尾部 nG原创 2017-10-15 16:59:58 · 213 阅读 · 0 评论 -
【Linux】静态库及动态库
库的制作和使用: 什么是库: 1 库是二进制代码 2 库是加了密的源代码 3 库是功能相近或者相似的函数的集合 库的作用: 1 代码的复用性, 提高了软件开发的效率, 而且稳定安全. 库的制作: 库分为静态库和动态库 库的名字: libtest1.a 材料: main.c fun1.c fun2.c原创 2017-10-15 17:02:42 · 197 阅读 · 0 评论 -
【Linux】高手养成--10 个习惯(2)
让我们面对现实吧:坏习惯很难改变。但是您已经熟悉的习惯可能更难克服。有时,重新审视某些事情可能让您遇到“啊哈,我没想到它能做到这一点!”的时刻。在 Michael Stutz 的优秀文章“UNIX 高手的 10 个习惯”的基础上,本文将提供另外 10 个 UNIX 命令行命令、工具和技术,可以使您成为更高效的 UNIX 命令行高手。您应当采纳的其他 10 个好习惯包括:使用转载 2017-11-01 13:22:51 · 232 阅读 · 0 评论 -
【Linux】高手养成--10个习惯
引言当您经常使用某个系统时,往往会陷入某种固定的使用模式。有时,您没有养成以尽可能最好的方式做事的习惯。有时,您的不良习惯甚至会导致出现混乱。纠正此类缺点的最佳方法之一,就是有意识地采用抵制这些坏习惯的好习惯。本文提出了 10 个值得采用的 UNIX 命令行习惯——帮助您克服许多常见使用怪癖,并在该过程中提高命令行工作效率的好习惯。下面列出了这 10 个好习惯,之后对进行了更详细的描述。转载 2017-11-01 13:20:36 · 328 阅读 · 0 评论 -
【Linux】判断系统当前是否开启了超线程
在判断当前是否开启了超线程之前,需要先判断另外几个数据:1,物理CPU个数:123[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniqphysical id : 0physical id : 1转载 2017-11-02 09:52:57 · 724 阅读 · 0 评论 -
【Linux】文件操作笔记
一 讲解open write read lseek close函数的使用 方法: 先讲解每个函数的用法, 然后编写代码以具体的例子进行: 代码文件名称: open.c 代码思路: 1 调用open函数新建一个文件 2 调用write函数写文件 3 调用lseek函数移动文件指针到文件头部 4 调用read函数读取文件内容原创 2017-10-16 22:59:24 · 225 阅读 · 0 评论 -
【Linux】死锁的预防、检测与修复
一、要点提示(1) 掌握死锁的概念和产生死锁的根本原因。(2) 理解产生死锁的必要条件--以下四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件。(3) 记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想。(4) 掌握死锁的预防策略中资源有序分配策略。(5) 理解进程安全序列的概念,理解死锁与安全序列的关系。(6)转载 2017-10-22 23:17:21 · 279 阅读 · 0 评论 -
【Linux】简易版线程池实现
threadpoolsimple.h#ifndef _THREADPOOL_H#define _THREADPOOL_H#include #include #include #include typedef struct _PoolTask{ int tasknum;//模拟任务编号 void *arg;//回调函数参数 void (*task_fun原创 2017-10-21 10:18:03 · 274 阅读 · 0 评论 -
【Linux】几种进程间通信方式的清晰比较
linux上面的IPC大多都是从UNIX上面继承而来。 最初Unix IPC包括:管道、FIFO、信号。System V IPC包括:System V消息队列、System V信号灯、System V共享内存区。由于Unix版本的多样性,电子电气工程协会(IEEE)开发了一个独立的Unix标准,这个新的ANSI Unix标准被称为计算机环境的可移植性操作系统界面(PSOIX)转载 2017-10-17 21:08:46 · 236 阅读 · 0 评论 -
【Linux】信号机制
在Linux中,信号是进程间通讯的一种方式,它采用的是异步机制。当信号发送到某个进程中时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成后再回到中断的地方继续执行。需要说明的是,信号只是用于通知进程发生了某个事件,除了信号本身的信息之外,并不具备传递用户数据的功能。1 信号的响应动作每个信号都有自己的响应动作,当接收到信号时,进程会根据信号的响应动作转载 2017-10-17 21:22:49 · 265 阅读 · 0 评论 -
【Linux】从进程共享的角度理解IPC通信
首先让我们思考这样一个问题:父子进程之间在fork后。有哪些相同,那些相异之处呢?刚fork之后:父子相同处: 全局变量、.data、.text、栈、堆、环境变量、用户ID、宿主目录、进程工作目录、信号处理方式...父子不同处: 1.进程ID 2.fork返回值 3.父进程ID 4.进程运行时间 5.闹钟(定时器) 6.未决信号集似乎,子进程复制原创 2017-10-18 09:18:17 · 215 阅读 · 0 评论 -
【Linux】fork,vfork 与exec作用详解
摘自:http://blog.chinaunix.net/uid-20528014-id-4068931.html1) 先说说forkfork在linux中用于进程的创建。它实际上是复制了一个与父进程(就是调用fork的进程)一模一样的子进程。其主要复制的内容包括: 进程控制块PCD、数据段与堆栈。代码段是共享的。因为代码段是read-only的,不用担心改写的问题,大家共转载 2017-10-18 09:31:01 · 1733 阅读 · 0 评论 -
【Linux】守护进程(daemon)创建及详解
一、概述Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysql转载 2017-10-18 09:48:40 · 1764 阅读 · 0 评论 -
【Linux】linux多线程全面解析
引入: 在传统的Unix模型中,当一个进程需要由另一个实体执行某件事时,该进程派生(fork)一个子进程,让子进程去进行处理。Unix下的大多数网络服务器程序都是这么编写的,即父进程接受连接,派生子进程,子进程处理与客户的交互。虽然这种模型很多年来使用得很好,但是fork时有一些问题:fork是昂贵的。内存映像要从父进程拷贝到子进程,所有描述字要在子进程中复制等等。目转载 2017-10-18 13:16:32 · 292 阅读 · 0 评论 -
【网络编程】IOCP模型与EPOLL模型的比较
一:IOCP和Epoll之间的异同。异:1:IOCP是WINDOWS系统下使用。Epoll是Linux系统下使用。2:IOCP是IO操作完毕之后,通过Get函数获得一个完成的事件通知。Epoll是当你希望进行一个IO操作时,向Epoll查询是否可读或者可写,若处于可读或可写状态后,Epoll会通过epoll_wait进行通知。3:IOCP封装了异步的消息事件的通知机制,同时封装转载 2017-10-19 13:16:23 · 448 阅读 · 0 评论 -
【Linux网络编程】深入理解Linux五种网络IO模型
相信很多从事linux后台开发工作的都接触过同步&异步、阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞、异步就是非阻塞,下面我们先剖析下这几个概念分别是什么含义。同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完转载 2017-10-19 13:22:02 · 2126 阅读 · 0 评论 -
【Linux】linux内核原子操作的实现
所谓原子操作,就是“不可中断的一个或一系列操作”。硬件级的原子操作:在单处理器系统(UniProcessor)中,能够在单条指令中完成的操作都可以认为是“原子操作”,因为中断只发生在指令边缘。在多处理器结构中(Symmetric Multi-Processor)就不同了,由于系统中有多个处理器独立运行,即使能在单条指令中完成的操作也有可能受到干扰。在X86平台生,CPU提供了在指令执行转载 2017-10-21 09:49:30 · 1371 阅读 · 0 评论 -
【Linux】多线程无锁编程--原子计数操作:__sync_fetch_and_add等12个操作
最近自己做了一些涉及多线程编程的项目,其中就涉及到多线程间计数操作、共享状态或者统计相关时间次数,这些都需要在多线程之间共享变量和修改变量,如此就需要在多线程间对该变量进行互斥操作和访问。 通常遇到多线程互斥的问题,首先想到的就是加锁lock,通过加互斥锁来进行线程间互斥,但是最近有看一些开源的项目,看到有一些同步读和操作的原子操作函数——__sync_fetch_and_a转载 2017-10-21 09:56:15 · 3232 阅读 · 0 评论 -
【Linux】深入理解线程池
为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。 传 统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即 时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩转载 2017-10-21 10:15:28 · 683 阅读 · 0 评论 -
【Linux】 简单线程池组件
0 前言这里我们实现一个可以用在线上环境的线程池组件,该线程池组件具备线程池应用的特性,如下所示:1. 伸缩性:即线程池中线程的个数应该是动态变化的。繁忙的时候可以申请更多的线程;空闲的时候则注销一部分线程。2. 线程状态:线程池中对线程的管理引入睡眠、唤醒机制。当线程没有任务在运行时,使线程处于睡眠状态。3. 线程管理:对线程池中线程的申请和注销,不是通过创建一个转载 2017-11-04 09:25:19 · 370 阅读 · 0 评论