
Linux programming
文章平均质量分 60
lanmolei814
这个作者很懒,什么都没留下…
展开
-
Cmake 两种方式设置变量及源码中使用(并获取git版本信息)
方式1:通过config.h.inA.CMakeLists.txtcmake_minimum_required (VERSION 3.15) project (createProVersion) # Add the variables we needset (VERSION_MAJOR 2)set (VERSION_MINOR 30)set (SOFT_VERSION \"V${VERSION_MAJOR}.${VERSION_MINOR}\")execute_process.原创 2021-09-13 16:14:45 · 1701 阅读 · 0 评论 -
Linux信号(signal) 机制分析
【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。 【关键字】软中断信号,signal,sigaction,kil转载 2015-05-15 15:38:03 · 411 阅读 · 0 评论 -
PPPOE协议原理与分析
PPPOE协议出现的背景随着宽带网络技术的不断发展,以xDSL、CableModem和以太网为主的几种主流宽带接入技术的应用已开展的如火如荼。同时又给各大网络运营商们带来了种种困惑,无论使用哪种接入技术,对于他们而言可盼和可求的是如何有效的管理用户,如何从网络的投资中收取回报,因此对于各种宽带接入技术的收费的问题就变得更加敏感。在传统的以太网模型中,我们是不存在所谓的用户计费的概念,要么用户能转载 2015-05-16 18:11:50 · 12263 阅读 · 0 评论 -
Linux中PPPOE技术分析
一、PPP协议介绍1.PPP协议的组成PPP协议包括两部分组成:一部分是数据链路控制协议(LCP);另一部分是网络控制协议(NCP)。2.PPP链接的过程分析PPP链接的建立过程分为三个阶段:创建,认证和网络协商阶段。创建阶段主要是工作是对基本的通信方式进行选择,链路两端的设备通过LCP向对方发送配置信息分组,一旦配置信息分组被发送且被接收。就完成交换,进入LCP开转载 2015-05-16 18:09:25 · 2397 阅读 · 0 评论 -
linux 下pppoe配置
一、环境搭建查看是否安装所需要的包。[root@MASTER ~]# rpm -qa |grep rp-pppoerp-pppoe-3.5-32.1配置文件目录在/etc/ppp下[root@MASTER ppp]# lschap-secrets ioptions ip-up ipv6-up转载 2015-05-16 18:08:45 · 4407 阅读 · 0 评论 -
添加用户到sudoers
*** is not in the sudoers file. This incident will be reported.” (用户不在sudoers文件中……)处理这个问题很简单,但应该先理解其原理再操作首先要明白root的密码一般用户是不应改知道的,但一般用户有时可能要用到root的一些权限。这里就有了一个 /etc/sudoers 文件,用来保存一些用户,使这些用户转载 2015-05-13 14:26:08 · 375 阅读 · 0 评论 -
linux下parted进行分区
1、parted分区通过输入parted 设备名进入分区命令行模式如下图2通过parint打印列出当前分区设备的磁盘容量大小3设置磁盘分区为gpt模式, mklabel gpt 然后点击YEs继续(提示磁盘的数据可能会丢失是否继续转载 2015-05-13 12:52:56 · 6634 阅读 · 0 评论 -
通过UUID方式在fstab中挂载分区
通过UUID在fstab中挂载分区 通常情况,Linux的/etc/fstab文件可能有如下内容: # /etc/fstab: static file system information.## Use 'blkid' to print the universally unique identifier for a# device; this m转载 2015-05-13 13:44:15 · 24761 阅读 · 0 评论 -
使用WinSCP软件在windows和Linux中进行文件传输
一.在fedora16上的前期准备工作:1.检查是否已经正常安装#rpm -qa | grep openssh-server如果没有正常安装,请执行以下命令进行安装: #yum install openssh-server2.开启ssh服务 #systemctl start sshd.service3. 随系统一起启动服务 #syste转载 2015-05-13 14:18:38 · 1772 阅读 · 0 评论 -
Core文件作用、设置及用法
1.Core文件简介Core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试。当程序崩溃时便会产生core文件,其实准确的应该说是core dump 文件,默认生成位置与可执行程序位于同一目录下,文件名为core.***,其中***是某一数字。2.开启或关闭Core文件的生成关闭或阻止core文件生成:$ulimit -c 0打开core文件生成转载 2015-04-22 22:07:52 · 9914 阅读 · 0 评论 -
Linux终端使用技巧
关键字: linux 终端今天才发现Linux下的终端有这么多好用的快捷键。Shift+Ctrl+T:新建标签页Shift+Ctrl+W:关闭标签页Ctrl+PageUp:前一标签页Ctrl+PageDown:后一标签页Shift+Ctrl+PageUp:标签页左移Shift+Ctrl+PageDown:标签页右移Alt+1:切换到标签页1Alt+2:切换到标签转载 2015-04-22 13:32:41 · 464 阅读 · 0 评论 -
Framebuffer原理、使用、测试
Framebuffer的配置及应用*一、FrameBuffer的原理* FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这 个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将转载 2015-03-29 19:00:09 · 4168 阅读 · 0 评论 -
linux下进程间通信
一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作转载 2015-02-10 17:58:52 · 351 阅读 · 0 评论 -
VIM高效率操作
这篇教程写了在不同工作模式下使用VIM的一些基本技巧 -- 即插入模式(insert mode), 命令模式(command mode), 存取文件等。目的是帮助刚刚接触VIM的新手更加有效率的使用这个出色的编辑器。说明:在这篇文章里面,代表Ctrl + X -- 就是按住Ctrl键然后再按X。而且你可以在很多情况下使用 :help command 来获得大部分命令的帮助,这个是VIM的内转载 2015-05-27 22:58:20 · 398 阅读 · 0 评论 -
如何清除一个被占用的tty端口
一个tty端口不可用,忙,或者该tty端口一直死锁,可能是因为有进程占用着该端口或者其他原因。下面我们示例如何清除一个被占用的tty端口。以下的例子假设tty端口是tty0。需要注意的是,只有root用户才能够完成以下的这些工作。1、首先查看tty正在处理什么进程的请求:ps -lt tty0该命令的返回格式应该类似于下面的形式:F S UID PID PPID C PRI NI转载 2015-05-18 22:17:02 · 1401 阅读 · 0 评论 -
使用unbound在RHEL7上搭建DNS服务
1.概念:DNS (Domain Name Server)域名解析服务,使用TCP&UDP的53号端口(主从DNS之间用TCP,客户端查询使用UDP)。它可以完成域名与IP地址的互换,可以通过IP地址解析到域名,也可以通过域名解析到IP地址。FQDN(Fully Qualified Domain Name)完全合格域名,层次化树形结构。通常表现为:主机名.子域.二级域.顶级域.根域.转载 2017-09-27 14:47:25 · 1118 阅读 · 0 评论 -
train
一、基本介绍1.1 Netfilter概述 Netfilter/IPTables是Linux2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性。其重要工具模块IPTables从用户态的iptables连接到内核态的Netfilter的架构中,Netfilter与IP协议栈是无缝契合的,并允许使原创 2015-05-20 23:22:31 · 652 阅读 · 0 评论 -
策略路由(PBR policy based routing)
传统的路由策略都是使用从路由协议派生出来的路由表,根据目的地址进行报文的转发。在这种机制下,路由器只能根据报文的目的地址为用户提供比较单一的路由方式,它更多的是解决网络数据的转发问题,而不能提供有差别的服务。 基于策略的路由为网络管理者提供了比传统路由协议对报文的转发和存储更强的控制能力。基于策略的路由比传统路由控制能力更强,使用更灵活,它使网络管理者不仅能够根据目的地址,而且能够根据协转载 2015-08-23 19:50:33 · 4272 阅读 · 0 评论 -
userdel: user * is currently used by process 1278
1、使用userdel 删除用户出现错误root@byhankswang-OptiPlex-780:/home# userdel byhankswang userdel: user byhankswang is currently used by process 12782、问题解决root@ www.linuxidc.com :/home# vipw找到你之前转载 2015-07-13 18:37:14 · 11433 阅读 · 1 评论 -
linux 常见问题
1、ubuntu 新建的用户 table 无法补全命令 解决办法问题现象:用useradd 命令新增了用户之后,发现在该新建用户下的命令终端,使用方向键无法调出历史命令,同时tab键也无法补全输入命令。 查看/etc/passwd 下用户下的该用户的信息,使用的shell为/bin/sh解决:修改用户使用的shell为/bin/bash使用usermod -s /bin/b原创 2015-05-25 12:48:38 · 354 阅读 · 0 评论 -
PF_PACKET 设备层编程接口
一、描述解释说明:#include #include /* 需要里面的 glibc 版本号 */#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1#include #include /* 链路层(L2)协议 */#else#include #include #include /* 链路层协议 */#endif转载 2015-06-09 23:17:57 · 4523 阅读 · 0 评论 -
vim command
常用命令:在命令模式1、 $y 或者 :1,$y //全部复制2、 dG //删除光标所在行到最后一行的内容(包括光标所在行的内容)3、 ggVG //全选gg 让光标移到首行,在vim才有效,vi中无效V 是进入Visual(可视)模式 G 光标移到最后一行 选中内容以后就可以其他的操作了,比如:d 删除选中内容 y 复制原创 2015-05-24 09:42:20 · 387 阅读 · 0 评论 -
Vim简明教程【CoolShell】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类转载 2015-05-24 09:17:30 · 340 阅读 · 0 评论 -
一步步将vim改造成C/C++开发环境(IDE)
我的vim IDE界面: 1、安装Vim和Vim基本插件首先安装好Vim和Vim的基本插件。这些使用apt-get安装即可:lingd@ubuntu:~/arm$sudo apt-get install vim vim-scripts vim-doc其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等。vim中文帮助文档tar包下载地址:h转载 2015-05-23 17:30:31 · 429 阅读 · 0 评论 -
dhcp
一、DHCP简介DHCP是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写﹐它的前身是BOOTP。BOOTP原本是用于无磁盘主机连接的网络上面的﹕网络主机使用 BOOT ROM 而不是磁盘起动并连接上网络﹐BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件地址,原创 2015-06-02 23:36:04 · 1082 阅读 · 0 评论 -
深入理解linux网络技术内幕读书笔记(八)--设备注册与初始化
Table of Contents1 设备注册之时2 设备除名之时3 分配net_device结构4 NIC注册和除名架构4.1 注册4.2 除名5 设备初始化6 设备类型初始化: xxx_setup函数7 net_device结构的组织8 查询9 设备状态10 注册状态11 设备的注册和除名12 设备注册状态通知13 netdev_chain通知链14 RTnetlink转载 2015-06-22 16:00:38 · 884 阅读 · 0 评论 -
在vim中使用cscope
1.首先确认vim打开了escope接口,可通过:version命令查看是否有+escope 然后$sud apt-get install escople自动安装2.为源代码生成一个cscope数据库在项目根目录运行下面的命令: cscope -Rbq 这些选项的含义见后面。这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.o转载 2015-05-18 22:15:35 · 565 阅读 · 0 评论 -
ubuntu 14.04状态栏不显示时间
有时候我们会看到我们电脑的状态栏那里并没有显示时间,一个原因是日期时间指示器没有工作,另一个可能的原因是用户禁用了时间显示。当你想显示它的时候,你可能会发现System Settings->Time & Date->Clock这里已经变成灰色,不可以选择,那如何来解决它呢?方法一:首先我们用下面的命令来确认一下是否安装了日期时间指示器:sudo apt-get install in转载 2014-10-30 21:20:07 · 1389 阅读 · 0 评论 -
线程间通信机制
一、Linux系统中的线程间通信方式主要以下几种:* 锁机制:包括互斥锁、条件变量、读写锁 互斥锁提供了以排他方式防止数据结构被并发修改的方法。读写锁允许多个线程同时读共享数据,而对写操作是互斥的。 条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。* 信号量机制(Sema转载 2015-02-05 17:55:05 · 1365 阅读 · 0 评论 -
进程与线程的一个简单解释
进程与线程的一个简单解释进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也转载 2014-08-06 23:06:32 · 420 阅读 · 0 评论 -
在linux中通过进程名获得进程id
当需要kil一个进程时,需要提供一个pid(使用kill命令)或提供一个进程名(使用pkill命令)。pkill是如何通过进程名得到进程id的?在linux中进程是通过文件来表示的,信息都存储在/proc/pid目录中。在/proc/pid/status文件的第一行,保存有进程名,和用户输入的进行比对,如果一致,就添加到动态数组中,最后返回。附代码:转载 2014-05-16 19:08:33 · 986 阅读 · 0 评论 -
linux shell数据重定向(输入重定向与输出重定向)详细分析
导读小文:【http://www.ibm.com/developerworks/cn/linux/l-iotips/】技巧:Linux I/O重定向的一些小技巧简介: Linux I/O 重定向虽然很简单,但在脚本编写、系统管理时却要常常打交道,搞清其中使用技巧非常有用。首先说一下什么是I/O重定向,所谓I/O重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序转载 2014-04-24 14:28:55 · 483 阅读 · 0 评论 -
linux system函数使用详解
相关函数fork,execve,waitpid,popen表头文件#i ncludelib.h>定义函数int system(const char * string);函数说明system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期转载 2014-04-24 14:22:19 · 521 阅读 · 0 评论 -
linux下获取程序当前目录绝对路径
在linux下运行的程序经常需要获取自己的绝对路径,程序可能需要引用外部的资源文件,比如在../skin/目录下的图片,这样普通程序是没有问题,但当程序在安装到/usr/bin/目录中,或者为程序建立连接以后就会出现问题,我们可以直接通过运行程序的链接来运行程序,这样../skin/目录就找不到了,因为当前目录并不是程序所在的目录,而且链接所在的目录,所以在它的上一级目录中根本找不到skin目录,转载 2014-05-04 15:58:54 · 5800 阅读 · 0 评论 -
DD-WRT无线路由绝招DHCP转发
前一段时间我们依次为大家介绍了如何将自己买来的无线设备刷新成功能强大的DD-WRT无线路由器,以及刷新后DD-WRT所具备的独有功能,不过由于篇幅关系只是对几大功能进行了简单介绍,并没有详细的说明。 从今天开始笔者将为各位IT168的读者介绍DD-WRT设备的几大特色功能,在介绍每个功能的时候都将通过一个个的实际例子讲解。希望各位能够对DD-WRT的应用有一个深入潜出的了解,转载 2014-04-14 11:48:29 · 5158 阅读 · 1 评论 -
Linux下使用system()函数一定要谨慎
曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,故抛弃不用,改用其他的方法。这里先不说我用了什么方法,这里必须要搞懂system()函数,因为还是有很多人用了system()函数,有时你不得不面对它转载 2013-11-19 11:49:51 · 963 阅读 · 0 评论 -
-bash: /usr/bin/fap: /bin/bash^M: bad interpreter: No such file or directory
有些时候,错误是这样显示的,那就不是python的版本问题了,属于编码问题。因为windows下的换行默认的是“换行+回车”,也就是“\n\r”,而linux下的换行默认的是“换行”,也就是“\n”,所以在windows下对fap进行修改的时候后面的“\r”linux是不认识的,会被默认成路径的一部分,显示出来就是“^M”.所以这个问题的修改办法就是改变fap文件的编码1)在windows转载 2013-09-10 16:43:42 · 957 阅读 · 0 评论 -
搭建嵌入式环境 :配置tftp服务
我的系统是Fedora 101. 配置本机的IP地址比如我的IP地址是172.33.66.17命令行:sudo ifconfig eth0 172.33.66.17 netmask 255.255.255.0这是临时的设置,重启后就丢失了。如果想保存设置,就修原创 2011-05-16 15:13:00 · 614 阅读 · 0 评论 -
Linux连接跟踪源码分析
连接跟踪用来跟踪和记录连接状态,是netfilter的一部份,也是通过在hook点上注册相应的结构来工作的。 无论是发送,接收,还是转发的数据包,都要经过两个conntrack模块。 第一个conntrack点的优先级是最高的,所有数据包进入netfil转载 2011-10-12 11:45:58 · 579 阅读 · 0 评论 -
Linux slab 分配器剖析
一.动态内存管理内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能:最小化管理内存所需的时间 最大化用于一般应用的可用内存(最小化管理开销) 内存管理实际上是一种关于权衡的零和游戏。您可以开发一种使用少量内存转载 2011-10-12 11:25:50 · 809 阅读 · 0 评论