- 博客(58)
- 资源 (1)
- 收藏
- 关注
转载 Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢? 在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢?我们在进行linux内核配置的时候经常会执行make men
2014-10-08 14:04:29
545
转载 Ubuntu中安装tftp服务的方法
检查tftp是否已经安装:netstat -a | grep tftp 若出现:udp 0 0 *:tftp 则说明已经安装,否则没有。1、安装相关软件包apt-get install tftpd (服务端)apt-get install tftp (客户端)
2014-10-07 16:24:30
773
转载 改vim为source insight
一直想把vim改成IDE,如果变成能变成Source Insight那样更是······,你懂得。现在终于算是搞定了,我在RHEL6.3上吧vim变成了source insight。先来一张图挺酷吧,不要以为很难就是几个插件搞定首先你要确定你的linux里安装了ctags,在RHEL6.3.ios的Packages目录下有这个rpm包。如果你
2014-09-25 17:32:41
512
转载 交叉编译和交叉调试环境搭建及使用
交叉编译和交叉调试环境搭建及使用1. 交叉编译器1.1 交叉编译器介绍在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。1.2 搭建交叉编译环境 1.2.1 实验环境交叉编
2014-09-11 14:54:19
495
转载 vim折叠设置(转载)
set foldmethod=indent "set default foldmethod"zi 打开关闭折叠"zv 查看此行zm 关闭折叠zM 关闭所有zr 打开zR 打开所有zc 折叠当前行zo 打开当前折叠zd 删除折叠zD 删除所有折叠1. 折叠方式可用选项 'foldmethod' 来设定折叠方式:set fdm=*****。有
2014-08-28 21:05:22
407
转载 const 和 #define区别
(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。
2014-08-28 21:04:33
377
转载 linux下vim的配置
最近安装的suse enterprise 10上面,vim还是默认的设置,使用起来很不顺手,花了一晚上的时间做了一下配置,从网上差了许多资料,整理一下,为以后做个备份~~ vim版本:7.3,suse10默认安装的版本是6.4有点老,nerdtree不支持,先从vim官网上下载个最新版本,root用户安装;1. vimrc基础配置:set nocp
2014-08-28 20:59:19
485
转载 用Eclipse和GDB构建ARM交叉编译和在线调试环境
我们在 Linux 主机中搭建我们的开发环境,使用 Ubuntu 10.04 LTS 为例。搭建应用开发环境安装 JREEclipse 依赖于Java 环境,所以必须先安装 JRE 或 JDK。安装 Eclipse 和 CDT去 Eclipse官网下载最新的Eclipse IDE。我们一般选择 C/C++ 版本(Eclipse
2014-08-10 22:01:08
1109
转载 非阻塞IO 和阻塞IO
IO模式设置网络编程常见问题总结—IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响—O_NONBLOCK(open使用)、IPC_NOWAIT(msgrcv)、MSG_DONTWAIT(recv使用)非阻塞IO 和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明: 基本概念
2014-04-04 22:41:18
373
转载 同步/异步与阻塞/非阻塞的区别
我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别.这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方.首先来解释同步和异步的概念,这两个概念与消息的通知机制有关.举个例子,比如我去银行办理业务,可能选择排队等候,也可能取一个小纸条上面有我的
2014-04-03 23:39:25
379
转载 Linux C线程的创建和使用
一、引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用
2014-03-20 23:02:41
1154
转载 linux多线程及信号处理
linux信号种类1、可靠信号和不可靠信号 "不可靠信号" Linux信号机制基本上是从Unix系统中继承过来的。早期Unix系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,因此,把那些建立在 早期机制上的信号叫做"不可靠信号",信号值小于SIGRTMIN(Red hat 7.2中,SIGRTMIN=32,SIGRTMAX=63)的信号都是不可
2014-03-07 09:54:01
483
转载 OSI7层模型每层的作用-
OSI共7层,应用层,表示层,会话层,传输层,数据链路层,物理层。应用层 应用层是网络可向最终用户提供应用服务的唯一窗口,其目的是支持用户联网的应用的要求。由于用户的要求不同,应用层含有支持不同应用的多种应用实体,提供多种应用服务,如电子邮件(MHS)、文件传输(FTAM)、虚拟终端(VT)、电子数据交换(EDI)等。主要协议有,FTP(21端口),SMTP(25端口),DNS,
2014-02-28 14:21:08
1140
转载 Posix线程编程指南
Posix线程编程指南(1) http://www-900.ibm.com/developerWorks/cn/linux/thread/posix_threadapi/part5/index.shtml内容: 一、 线程创建 二、线程取消 关于作者 线程创建与取消 杨沙洲(pubb@16
2014-02-27 17:28:26
436
原创 C语言指针数组和数组指针
初学者总是分不出指针数组与数组指针的区别。其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。下面到底哪个是数组指针,哪个是指针数组呢:A)int *p1[1
2014-02-27 17:22:18
446
转载 Arm-Linux根文件系统网络配置小结
Arm-Linux根文件系统网络配置小结 本文分三点来记录嵌入式Linux根文件的一些网络配置技巧: 1、对开发板配置静态IP: 将根文件系统/etc/network/interface文件中 auto eth0iface eth0 inet dhcp pre-up /bin/grep -v -e
2014-02-27 14:06:53
597
转载 malloc分配原理浅析 mmap关注焦点 如何优化分配内存
现象1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000。 初步分析majflt代表major fault,中文名叫大错误,min
2014-02-26 15:56:37
532
转载 Socket_send函数和recv函数详解
int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第
2014-02-26 15:47:31
3058
转载 跟我一起写 Makefile
陈皓 概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefi
2014-02-26 15:45:36
625
转载 ifconfig命令
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config)。通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改
2014-02-26 15:43:22
408
转载 Linux中fork()函数详解
linux中fork()函数详解(原创!!实例讲解) (转载) 一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给
2014-02-26 15:41:26
396
转载 关于socket阻塞与非阻塞情况下的recv、send、read
1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区 别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的,继续接收。只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,
2014-02-26 15:40:21
900
转载 recv send 阻塞和非阻塞
阻塞和非阻塞 阻塞函数在完成其指定的任务以前不允许程序调用另一个函数。例如,程序执行一个读数据的函数调用时,在此函数完成读操作以前将不会执行下一程序语句。当服务器运行到accept语句时,而没有客户连接服务请求到来,服务器就会停止在accept语句上等待连接服务请求的到来。这种情况称为阻塞(blocking)。而非阻塞操作则可以立即完成。比如,如果你希望服务器仅仅注意检查是否有客户在等待连
2014-02-26 15:40:00
5652
转载 Linux下编程为什么多用进程少用线程
一、Linux内核对多进程和多线程的支持方式Linux的线程实现是在核外进行的,核内提供的是创建进程的接口do_fork()。内核提供了两个系统调用__clone()和fork(),最终都用不同的参数调用do_fork()核内API。 do_fork() 提供了很多参数,包括CLONE_VM(共享内存空间)、CLONE_FS(共享文件系统信息)、CLONE_FILES(共享文件描述符表)、CL
2014-02-26 15:36:42
806
1
转载 程序崩了,咋办?
1. 内存溢出是啥?举个栈溢出的例子。所有的在函数内部申请的局部变量都是保存在栈中的。比如:#include void fn(void) { char a[100]; char *p = a; bzero(p, 1000); } int main(int argc, char *argv[]) { fn(); return 0; }
2014-02-26 15:33:48
912
原创 POSIX和SYSTEM的消息队列应该注意的有关问题
/**************************************************************************************************/消息队列部分消息队列消息队列可以认为是一个消息链表。有足够写权限的线程就可往队列中放置消息,有足够读权限的线程就可以从队列中取走消息。每个消息是一个记录,他有发送者赋予一个优先级。在某个进
2014-02-26 15:30:33
579
转载 msgsnd与msgrcv函数
今天写了一个小程序,使用了消息队列的msgsnd msgrcv函数,由msgsnd函数循环处理由终端输入的消息,然后把它发送到消息队列,而另一个进程则循环读取消息,进行处理。 这时,问题出现了,每次调用msgrcv函数的时候,它总是第一次调用成功,而第二次返回错误,察看errno=22,打印出来是invalid argument,无效参数。 凭它的说明,可以看出可能是我调用函数
2014-02-26 15:25:48
4914
转载 Linux系统调用列表
以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用
2014-02-26 15:09:29
382
转载 c++ 时间类型详解 time_t
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Uni
2014-02-26 15:08:49
1114
转载 Linux:C/Socket多路复用select
Linux:C/Socket多路复用select 小全Submitted byELFeron 2006, August 3, 5:46 PM.Unix/Linux作一个tcp的服务程序,同时可能有大量的客户端连上来,希望分别记住各个socket谁有数据过来,就读出来,放到一个请求队列--这些事情用一个线程完成另外有一个结果队列,如果结果里包含了socket的编号,用一个线程专门
2014-02-26 15:07:54
666
转载 Linux Socket编程(不限Linux)
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型
2014-02-26 14:55:24
358
转载 自动检测SOCKET链接断开
如何判断SOCKET已经断开最近在做一个服务器端程序,C/S结构。功能方面比较简单就是client端与server端建立连接,然后发送消息给server。我在server端会使用专门的线程处理一条socket连接。这就涉及到一个问题,如果socket连接断开(异常,正常)后,我如何才能感知到?server端这边是绝对被动的,sever端不能主动断开连接。也没有连接链路维持包之类的。cl
2014-02-26 14:52:22
3578
2
转载 VI中的多行删除与复制
VI中的多行删除与复制法一:单行删除,:1(待删除行)d多行删除 ,:1,10d法二:光标所在行,dd光标所在行以下的N行,Ndd方法1:光标放到第6行,输入:2yy光标放到第9行,输入:p此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。方法2:命令行模式下输入6,9 co 12复制第6行到第9行之间的内容到第12行后面。方法3:
2014-02-26 14:47:12
398
转载 win32/linux下网络编程十点需要注意的地方
书上看到的,有几点觉得还是值得注意。1、头文件win32: #includelinux: #include2、关闭win32: closeScoket(s);linux: close(fd);3、在NONBLOCKING模式下调用connect,大部分返回win32: WSAEWOULDBLOCKlinux: EINPROGR
2014-02-26 14:41:34
447
转载 Linux下C语言的调试器 Gdb
Gdb的命令可以通过查看help进行查找, 由于Gdb的命令很多, 因此Gdb的help将其分成了很多种类(class), 你可以通过进一步查看相关class找到相应命令. 如下所示:(gdb) helpList of classes of commands:aliases -- Aliases of other commandsbreakpoints -- Making pr
2014-02-26 14:36:54
504
转载 Ubuntu快捷键 终端快捷键
1.关于终端的快捷键:Tab:tab键是比较常用的一个快捷键,它的作用是补全文件名或者路径。举例 来说,输入”cd /ho”在按一下tab键,终端里就会显示”cd /home”了。如果您的文件夹下,有两个名字开头部分相同的文件,比如有”picture001.bmp”和”picture002.bmp”两个文 件,输入”rm pic”以后按下tab键,就会补全成”rm picture”,您
2014-02-26 14:31:41
570
转载 linux 统计 程序运行时间
这篇文章写的很详细,转一个我们有时需要得到程序的运行时间,但我们也要知道,根本不可能精确测量某一个程序运行的确切时间[3],文献[4]中说的很明白,现摘录如下。 我们平时常用的测量运行时间的方法并不是那么精确的,换句话说,想精确获取程序运行时间并不是那么容易的。也许你会想,程序不就是一条条指令么,每一条指令序列都有固定执行时间,为什么不好算?真实情况下,我们的计算机并
2014-02-25 22:39:49
907
转载 多线程还是多进程的选择及区别
关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。 经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际情况来判断,哪个更
2014-02-25 22:38:18
482
转载 错误: 程序中有游离的‘\302’ ‘\240’等
在写程序时,有时候编译器需要程序必须是英文输入,但大家经常切到中文或者直接复制网络上的源代码,所以就出现了et_ip.c:28:1: 错误: 程序中有游离的‘\302’get_ip.c:28:1: 错误: 程序中有游离的‘\240’get_ip.c:28:1: 错误: 程序中有游离的‘\302’get_ip.c:28:1: 错误: 程序中有游离的‘\240’get_
2014-02-25 22:37:07
1438
原创 Linux下 用消息队列收发长度不同的消息
把 struct msg 改一下,struct msg{ long int msgtype; int count; unsigned int data[35];}其中count记录总共有多少个 data,这样就可以发送变长的消息了,比如你要发10个unsigned int,那么struct msg mymsg;mymsg.msgtype = XXXX;
2014-02-25 22:35:50
1066
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人