![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Lunix
文章平均质量分 64
feixiaku
这个作者很懒,什么都没留下…
展开
-
Linux 段错误详解
By Falcon ofTinyLab.org 2015/05/12目录1背景2什么是段错误3段错误日志分析3.1例子3.2段错误信息3.3段错误分析4常见段错误举例4.1scanf 参数:把 &i 写为 i4.2sprintf/printf 参数:%d/%c 写成 %s4.3数组访问越界4.4写只读内存4.5转载 2016-04-06 20:59:26 · 3964 阅读 · 0 评论 -
Linux find 命令
find 命令在linux中是很常用到的一个查找命令,它的功能非常地强大。可以结合正则匹配来搜索系统中的指定的内容,以下我就记录一下这个find常用到的一些用法 find 语法:find path -option [ -print ] [ -exec -ok command ] {} \;参数:path: fin转载 2014-10-08 12:46:26 · 638 阅读 · 0 评论 -
多线程及其同步
多线程程序能够充分利用多核CPU,提升程序性能。在编写多线程程序时,我们首先需要考虑的问题是如何协调好各个线程之间的工作,让他们有条不紊的共同高效完成工作,即:线程同步。Linux中,可以通过互斥锁、条件变量、信号量、读写锁等来解决线程的资源同步问题。此外,在多线程编程实现线程同步过程中,尤其需要注意避免发生死锁现象。关于死锁,详细说明如下:计算机系统中,如果系统的资源分配策略不当转载 2014-09-30 00:21:45 · 585 阅读 · 0 评论 -
ubuntu 安装svn
环境:ubuntu10.04LTS1、在终端中直接输入 sudo apt-get install subversion,选择安装即可2、查看版本命令 svnserve --version(更多命令直接键入svnserve --help可查看到)3、查看svnserver是否已启动: netstat -ntlp,可看到svn对应的端口3690(如果没有看见,则证明服务未启动,可使用sv转载 2014-08-15 11:49:52 · 385 阅读 · 0 评论 -
vim在同一个窗口中同时编辑多个文件
一、如果在终端中开没有打开vim,可以:横向分割显示:$ vim -o filename1 filename2 纵向分割显示:$ vim -O filename1 filename2 二、如果已经用vim打开了一个文件,想要在窗口中同时再打开另一个文件:横向分割显示::vs filename纵向分割显示::sp filename其中,vs可以用vsp转载 2014-08-13 16:36:28 · 524 阅读 · 0 评论 -
select函数详解及应用
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方转载 2014-09-10 11:55:30 · 466 阅读 · 0 评论 -
Linux + Eclipse 配置交叉编译环境
最精在研究u-boot,之前用的编译方法是在windows下用vs进行就该,然后用虚拟机里的ubuntu进行编译,中间使用共享文件夹。后来觉得太麻烦了,干脆直接在linux下进行修改和编译,因此安装了Eclipse for c/c++ developer。下面介绍两种交叉编译环境搭建的方法: 一.使用工程中自带的Makefile。 1.选择New->Project,而不是Import转载 2014-09-18 12:26:31 · 4125 阅读 · 0 评论 -
Ubuntu 环境变量
Ubuntu环境变量环境变量配置文件在Ubuntu中有如下几个文件可以设置环境变量1、/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。2、/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。3、~/转载 2014-09-18 11:38:34 · 562 阅读 · 0 评论 -
逻辑地址、线性地址、物理地址和虚拟地址理解
逻辑地址(Logical Address) 是指由程式产生的和段相关的偏移地址部分。例如,你在进行C语言指针编程中,能读取指针变量本身值(&操作),实际上这个值就是逻辑地址,他是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel保护模式下程式执行代码段限长内的偏移地转载 2014-08-19 23:34:18 · 451 阅读 · 0 评论 -
UDP收/发广播包过程
UDP收/发广播包过程 如果网络中两个主机上的应用程序要相互通信,其一要知道彼此的IP,其二要知道程序可监听的端口。因为同一主机上的程序使用网络是通过端口号来区分的。UDP Socket的使用过程:1. 初始化网络库2. 创建SOCK_DGRAM类型的Socket。3. 绑定套接字。4. 发送、接收数据。5. 销毁套接字。6. 释放网络库。 广播数据包的转载 2014-09-04 15:05:11 · 1832 阅读 · 0 评论 -
5种服务器网络编程模型讲解
1.同步阻塞迭代模型同步阻塞迭代模型是最简单的一种IO模型。其核心代码如下:bind(srvfd);listen(srvfd);for(;;){ clifd = accept(srvfd,...); //开始接受客户端来的连接 read(clifd,buf,...); //从客户端读取数据 dosomthingonbuf(bu转载 2014-09-30 00:10:01 · 559 阅读 · 0 评论 -
iptable实例-禁止QQ,使能www以及局域网内不同ip具有不用访问权限
iptables实战记录 netfilter/iptables这个玩意儿似乎很复杂一直没太搞懂它的原理,所以从给公司配置服务器开始就从未使用过它,让同事们共享上网时才用了一下它的伪装,当时也只是从网上看到了那行iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE,仍然不知道它究竟都干了些什么。最近觉得QQ这个东西的确有些影响同事们工作,所以下决转载 2014-10-17 12:53:57 · 1203 阅读 · 0 评论 -
扩大Vmware虚拟机中Ubuntu系统磁盘空间的方法
在虚拟机里安装系统,有时即会遇到初始分配的磁盘空间不够用的情况。如果是windows系统,则直接在虚拟机选项里扩容即可,但linux系统则没有这么简单。下面是志文工作室整理的vmware下ubuntu系统磁盘扩容的方法与步骤,仅供参考。提示:vmware里安装虚拟系统,因为磁盘大小可以使用动态扩容方式,应尽量将磁盘初始空间设置大一些,如20G,以避免不必要的麻烦。系统状态VM虚拟机Wo转载 2015-03-04 21:47:27 · 454 阅读 · 0 评论 -
使用Nginx+FFMPEG搭建HLS直播转码服务器
目的:使Nginx支持Rtmp协议推流,并支持hls分发功能及FFMPEG转码多码率功能。一、准备工作模块:nginx-rtmp-module-master(支持rtmp协议)下载地址:http://nginx.orghttps://github.com/arut/nginx-rtmp-module1、安装依赖包:#yum -y install gcc glibc gl转载 2016-04-05 22:02:55 · 983 阅读 · 0 评论 -
善用GDB 调试一些函数栈被毁坏的问题
最近差一些问题,这些问题的现象一开始难以解释,函数的参数地址在函数内部被传递给另外的函数,然后发现地址发生了改变,这样的情况称之为函数的栈被毁坏,导致无法重入。然后被调用的函数里面,访问了非法的地址导致了segment fault,产生core dump文件。问题比较棘手查了一些文件,准备从gdb的栈保护设置开始着手。1) 编译的时候添加编译选项-fstack-pr转载 2016-04-05 20:07:36 · 2301 阅读 · 0 评论 -
关于一些core dump的问题,makefile以及gdb的使用问题
相信在linux下写程序可以认为是一种享受,但是经验的积累是如此的重要,现在工作的时候很少有时间去积累自己的知识,这正是我从学校走出来之后得到的切身体会。最近一段时间仍然再忙关于ipv6的开发任务,马上就要面临又一次大的integration test,做好自己的代码测试看来是尤为重要,特别是在别人的代码没有完成的情况下,就必须想尽一切办法把自己的代码完善,然后去模拟输出,输入的来测试好自己的代码转载 2016-04-05 20:06:37 · 1238 阅读 · 0 评论 -
c内存系列(一):缓冲区溢出
转自:http://blog.chinaunix.net/uid-20340944-id-1702253.html在这里强调一下,想完全看的懂这篇文章,至少需要具备一定的汇编语言,C语言和LINUX的基础。 缓冲区溢出”在英文中可以解释为:buffer overflow,buffer overrun,smash thestack,trash the stack,scribb转载 2016-04-04 22:32:25 · 932 阅读 · 0 评论 -
初识缓冲区溢出
在改造一个ota_ts_generator工具时,调试时,发生如下错误: ./app ?123**** stack smashing detected ***: ./app terminated**======= Backtrace: =========**/lib/tls/i686/cmov/libc.so.6(转载 2016-04-04 22:12:50 · 456 阅读 · 0 评论 -
GDB内存断点(Memory break)的使用举例
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! GDB内存断点(Memory break)的使用举例 本文是一篇使用GDB设置内存断点的例子。 1. 源程序 文件名:testMemBreak.c#include #includ转载 2016-04-04 22:05:22 · 4264 阅读 · 0 评论 -
Signal ()函数详细介绍 Linux函数
signal()函数理解在 这个头文件中。signal(参数1,参数2);参数1:我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的宏。参数2:我们处理的方式(是系统默认还是忽略还是捕获)。一般有3中方式进行操作。(1)eg: signal(SIGINT ,SIG_ING );//SIG_ING 代表忽略SIGI转载 2015-08-12 10:56:43 · 434 阅读 · 0 评论 -
Makefile 中:= ?= += =的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endif转载 2015-06-22 09:52:00 · 380 阅读 · 0 评论 -
pthread_key_t和pthread_key_create()详解
pthread_key_t和pthread_key_create()详解下面说一下线程中特有的线程存储, Thread Specific Data 。线程存储有什么用了?他是什么意思了?大家都知道,在多线程程序中,所有线程共享程序中的变量。现在有一全局变量,所有线程都可以使用它,改变它的值。而如果每个线程希望能单独拥有它,那么就需要使用线程存储了。表面上看起来这是一个全局变转载 2015-04-15 22:06:33 · 470 阅读 · 0 评论 -
make命令执行过程
make的执行过程如下:1. 依次读取变量“MAKEFILES”定义的makefile文件列表2. 读取工作目录下的makefile文件(根据命名的查找顺序“GNUmakefile”,“makefile”,“Makefile”,首先找到那个就读取那个)3. 依次读取工作目录makefile文件中使用指示符“include”包含的文件4. 查找重建所有已读取的makefile文件的规转载 2014-07-15 10:47:51 · 2526 阅读 · 0 评论 -
《自己动手写操作系统》—— 工作环境搭建
最近在看《自己动手写操作系统》 于渊著,看第一页头就蒙了,书上说要准备一张空白软盘,都2010年了,上哪去找软盘啊,自从接触计算机以来我还没见过软盘呢,估计要到科技博物馆才找得到吧,呵呵。其实在第二章-搭建你的工作环境 中作者提到其实并不需要用真正的软盘,用虚拟软盘映像就可以了,也就是*.IMG文件,反过来想想,连计算机都可以虚拟,软盘当然也可以虚拟了。软盘映像文件并不需要自己制作,随书附赠的转载 2014-07-14 00:32:38 · 7232 阅读 · 1 评论 -
Ubuntu进入root权限命令——sudo和su命令详解
Ubuntu进入root权限命令——sudo和su命令详解ubuntu用户管理sudo意思就是super-user do,让当前用户暂时以管理员的身份root来执行这条命令。su是用来改变当前用户的,su root,就是将当前用户切换为root,用了su root之后,下面所有的命令就可以不用打sudo了,因为当前用户已经是管理员root了。root 用户为根用户,转载 2013-05-08 08:51:32 · 769 阅读 · 0 评论 -
在LINUX下利用pthread库进行多线程编程
1、概述多线程程序作为一种多任务、并发的工作方式,有以下的优点: 1) 提高应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作(time consuming)置于一个新的线程,可以避免这种尴尬的情况。 2) 使多CPU系统更加有效。操作系统会保证当线程数不大转载 2013-04-28 22:08:57 · 578 阅读 · 0 评论 -
在Linux里设置环境变量的方法(export PATH)
在Linux里设置环境变量的方法(export PATH)一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量:1、直接用export命令:#export PATH转载 2013-04-27 11:27:31 · 556 阅读 · 0 评论 -
vi使用方法
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。 1、vi的基本概念 基本上vi可以分为三种状原创 2013-04-26 13:21:32 · 470 阅读 · 0 评论 -
struct sockaddr_in等Socket编程相关数据类型定义
计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位字节优先方式存储数据的机器,在Internet上传输数据时就需要进行转换。 我们要讨论的第一个结构类型是:struct sockaddr,该类型是用来保存socket信息的: struct sockaddr { un转载 2013-04-26 12:57:39 · 729 阅读 · 0 评论 -
pthread学习笔记
转载于:http://www.cnblogs.com/xfiver/archive/2013/01/23/2873725.html 线程学习P287-P297?#include //新建线程int pthread_create(pthread_t *restrict tidp, const pthread_attr_t转载 2013-04-26 13:27:53 · 587 阅读 · 0 评论 -
ubuntu安装Android开发环境配置
转载于:http://blog.csdn.net/aomandeshangxiao/article/details/8828521 在ubuntu中安装android开发环境,首先得配置java开发环境,进入官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,转载 2013-04-24 10:32:13 · 747 阅读 · 0 评论 -
虚拟机安装Ubuntu12.04
问题描述 使用虚拟机安装Ubuntu过程中一直停留在“PLEASE WAIT! Vmware Tools is currently being installed on your system”如下图: 软件环境 VMWare 7 Ubuntu 12.04原创 2013-03-26 23:46:41 · 531 阅读 · 0 评论 -
Ubuntu11.10 Vim配置
"=========================================================================" DesCRiption: 适合自己使用的vimrc文件,for Linux/Windows, GUI/Console"" Last Change: 2010年08月02日 15时13分 "" Version: 1.80转载 2013-03-22 08:04:55 · 600 阅读 · 0 评论 -
samba实现Ubuntu_11.10和win7文件共享
1. 安装samba服务器命令:sudo apt-get install sambasudo apt-get install smbfsubuntu11.10中启动 ,命令:sudo service smbd start注:ubuntu下/etc/init.d/下没有samba,只有转载 2013-05-08 09:05:58 · 602 阅读 · 0 评论 -
CentOS 6.4安装adobe Flash player
随便打开一个带Flash的网站,提示需要安装插件,使用firefox自带功能安装失败。点“手动安装”会自动跳转到AdobeFlash Player下载页面选择”.rpm For Linux“显示并下载下载完后复制文件到文件夹(我的是复制到/usr/local/adobe)在终端里进入安装文件存放的文件夹 以我的为例:cd/usr/local/adobe原创 2013-08-04 17:56:12 · 1375 阅读 · 0 评论 -
批量执行linux文件夹下的各个shell文件
懒惰是程序员的天性,虽然写好的shell脚本可以单独分析每个文件夹的数据,但由于脚本的数量也是比较可观的,为了执行一个脚本能处理所有数据,所以有了如下代码:分别执行每个文件夹下的analyze_data.sh脚本 #!/usr/bin/bash echo "-------auto analyze data-------" for data in $(转载 2014-03-28 01:09:39 · 1416 阅读 · 0 评论 -
Makefile选项CFLAGS,LDFLAGS,LIBS
CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include转载 2014-07-15 10:49:14 · 576 阅读 · 0 评论 -
Ubuntu下,清屏等终端常用命令
# ctrl + l - 清屏 # ctrl + c - 终止命令# ctrl + d - 退出 shell,好像也可以表示EOF# ctrl + z - 将当前进程置于后台,fg还原。 # ctrl + r - 从命令历史中找 # ctrl + a - 光标移到行首 # ctrl + e - 光标移到行尾# ctrl + u - 清除光标到行首的字符 # ctrl转载 2014-07-25 16:40:49 · 1698 阅读 · 0 评论 -
Ubuntu 12.04 网络配置 Ubuntu静态IP Ubuntu上网配置
执行命令:1vim /etc/network/interfaces编辑内容如下:123456789101112131415auto loiface lo inet loopback #网卡eth0的配置aut转载 2014-07-24 10:05:00 · 574 阅读 · 0 评论 -
ubuntu下安装配置SSH,Putty
Ubuntu 下安装 OpenSSH Server 是无比轻松的一件事情,需要的命令只有一条:[plain] view plaincopysudo apt-get install openssh-server 启动SSH服务:[plain] view plaincopysudo /etc/init.d/ssh转载 2014-07-22 09:56:08 · 687 阅读 · 0 评论