01 2014 档案

vim之执行shell命令
摘要:vim中执行shell命令,有以下几种形式(1) :!command 不退出vim, 并执行shell命令command, 将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 (2) :r !command 将shell命令command的结果插入到当前行的下一行 :r !data, 读取系统时间并插入到当前行的下一行; 阅读全文

posted @ 2014-01-24 15:18 阳台 阅读(341) 评论(0) 推荐(0) 编辑

linux 之进程间通信-------------InterProcess Communication
摘要:进程间通信至少可以通过传送打开文件来实现,不同的进程通过一个或多个文件来传递信息,事实上,在很多应用系统里,都使用了这种方法。但一般说来,进程间 通信(IPC:InterProcess Communication)不包括这种似乎比较低级的通信方法。Unix系统中实现进程间通信的方法很多,而且不幸的是,极少方法能在所有的Unix系 统中进行移植(唯一一种是半双工的管道,这也是最原始的一种通信方式)。而Linux作为一种新兴的操作系统,几乎支持所有的Unix下常用的进程间通信 方法:管道、消息队列、共享内存、信号量、套接口等等。 1、管道(pipe) 管道是进程间通信中最古老的方式,它包括... 阅读全文

posted @ 2014-01-24 11:42 阳台 阅读(786) 评论(0) 推荐(0) 编辑

linux核心之进程管理
摘要:进程就是处于执行期的程序(目标码存放在某中介质上)。进程并不仅仅局限于一段可执行程序代码,通常还包括其他资源,例如打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间以及一个或多个执行线程,当然还包括用来存放全局变量的数据段等; 线程是在进程中活动的对象,每个线程都拥有一个独立的程序计数器、进程栈、一组进程寄存器。 内核调度的对象是线程, 而不是进程; 进程是处于执行期的程序以及相关的资源的总称;进程的另一个名字是任务(task)。Linux 内核通常把进程也叫做任务。内核把进程的列表存放在叫做任务队列(task list)的双向循环链表中; 链表中... 阅读全文

posted @ 2014-01-23 16:44 阳台 阅读(363) 评论(0) 推荐(0) 编辑

linux线程之pthread_join
摘要:pthread_join使一个线程等待另一个线程结束。 代码中如果没有pthread_join;主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。 所有线程都有一... 阅读全文

posted @ 2014-01-22 14:09 阳台 阅读(10338) 评论(0) 推荐(1) 编辑

linux之vim配置
摘要:代码自动补全和代码跳转阅读,应该是作为程序员最常用的功能之一了,具体二者是指什么我就不解释了。微软的Visual Studio就是靠这两样必杀技牢牢占据着广大windows程序员的心(这里面要有强大的VS插件Visual Assistant X一份功劳)。。。但是Linux程序员其实更幸福,不花钱就能搞定这两大功能。从本质上说,这二者的实现都依赖于一样东西:tag。tag就是程序中的关键词,在C++中主要包括:变量、函数名、类名等。代码自动补全 实际上是 tag的匹配(例如,程序员输入cla时,由于存在class这个c++的tag,就可以用class匹配cla);代码跳转阅读实际上是tag的查 阅读全文

posted @ 2014-01-22 10:10 阳台 阅读(442) 评论(0) 推荐(0) 编辑

静态变量、静态函数 与 普通变量 普通函数的区别
摘要:关于这个问题不得不涉及到 堆 和 栈的区别1. 内存分配 一个有c/c++编译的程序占用的内存分为以下几个部分 (1). 栈区(stack)--------由编译器自动分配释放, 存放函数的参数,局部变量的值等。其操作方式类似于数据结构中的栈。 (2).堆区(heap)---------一般由程序员分配、释放。若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 (3).全局区(静态区)(static)-----------全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态... 阅读全文

posted @ 2014-01-21 14:34 阳台 阅读(1987) 评论(0) 推荐(0) 编辑

linux 虚拟文件系统----------Virtual File System VFSkky
摘要:在了解虚拟文件系统之前,必须先知道什么是 Kernal Space 与 User Space。 Kernal Space 与User Space 的差别,在于内存使用上安全机制的差异。 kernal执行时会占据一段系统的内存空间, 这一段内存空间便是Kernal Space. 所有用户是无法和kernal space 直接交互的。 在/proc/iomem文件中所记录的kernal地址, 可以在命令行中执行: cat /proc/iomem | moreUser Space 则强调,用户执行任何的程序所占用的内存部分, 对这些User Space 程序而言, 无法直接使用Kerna... 阅读全文

posted @ 2014-01-20 13:28 阳台 阅读(813) 评论(0) 推荐(0) 编辑

linux进程之fork 和 exec函数
摘要:---恢复内容开始---fork函数该函数是unix中派生新进程的唯一方法。 #include pid_t fork(void);返回: (调用它一次, 它返回 两次 , 它在调用进程(称为父进程)中返回一次, 返回值是新派生进程(称为子进程)的进程ID号 在子进程又返回一次,返回值为0。 因此,返回值本身告知当前进程是子进程还是父进程) 在子进程中为0, 在父进程中为子进程ID, 若出错则为-1;fork有两个典型的用法: 1.一个进程创建一个自身的副本,这样每个副本都 可以在另一个副本执行其他任务的同时处理各自的某个操作。 这是网络服务器的典型用法; 2. 一个进程... 阅读全文

posted @ 2014-01-18 14:40 阳台 阅读(7290) 评论(0) 推荐(1) 编辑

linux网络编程涉及的函数
摘要:常用的网络命令:netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息。 netstat有许多的选项我们常用的选项是-an用来显示详细的网络状态。至于其它选项我们使用帮助;telnet telnet是一个用来远程控制的程序,但是我们请完全可以用这个程序来调试我们的服务端程序的;比如我们的服务器程序在监听8888端口,我们可以用telnet localhost 8888来查看服务端的状况. ============TCP==============TCP_Server: socket() bind() listen() accpet() wirte(... 阅读全文

posted @ 2014-01-14 18:00 阳台 阅读(233) 评论(0) 推荐(0) 编辑

C标准中一些预定义的宏
摘要:C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。 宏(双下滑线) 意义 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __FILE__ 代表当前源代码文件名的字符串文字 __LINE__ 代表当前源代码中的行号的整数常量 __TIME__ 源文件编译时间,格式微“hh:mm:ss” __func__ 当前所在函数名 对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数。 下面一个... 阅读全文

posted @ 2014-01-13 11:29 阳台 阅读(238) 评论(0) 推荐(0) 编辑

Epoll在LT和ET模式下的读写方式
摘要:在一个非阻塞的socket上调用read/write函数,返回EAGAIN 或者 EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂时不够,能read时,读缓冲区没有数据,或者write时,写缓冲区满了。遇到这种情况,如果是阻塞socket,read/write就要阻塞掉。 如果是非阻塞socket,read/write立即返... 阅读全文

posted @ 2014-01-10 15:08 阳台 阅读(345) 评论(0) 推荐(0) 编辑

深入了解epoll (转)
摘要:一、 介绍Epoll 是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。传统的select以及poll的效率会因为 socket数量的线形递增而导致呈二次乃至三次方的下降,而epoll的性能不会随socket数量增加而下降。标准的linux-2.4.20内核... 阅读全文

posted @ 2014-01-10 11:18 阳台 阅读(1339) 评论(0) 推荐(0) 编辑

linux网络编程之网络函数详解
摘要:1、epoll_create函数 函数声明:int epoll_create(int size) 该 函数生成一个epoll专用的文件描述符。它其实是在内核申请一空间,用来存放你想关注的socket fd上是否发生以及发生了什么事件。size就是你在这个epoll fd上能关注的最大socket fd数。随你定好了,前提是有足够的空间。2. socket 函数 函数原型 int socket(int domain, int type, int protocol); 应用程序调用socket函数来创建一个能够进行网络通信的套接字,即套接口描述文件字,它是一个整数,如同文件描述符一样,是内... 阅读全文

posted @ 2014-01-10 09:40 阳台 阅读(891) 评论(0) 推荐(0) 编辑

Linux下并发网络设计之I/O复用
摘要:I/O 流: 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。 现在假定一个情形,我 阅读全文

posted @ 2014-01-09 15:59 阳台 阅读(259) 评论(0) 推荐(0) 编辑

嵌入式系统 Boot Loader
摘要:基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。 阅读全文

posted @ 2014-01-09 15:55 阳台 阅读(221) 评论(0) 推荐(0) 编辑

linux下curl编程
摘要:LibCurl是免费的客户端URL传输库,支持FTP,FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE ,LDAP等协议,其主页是http://curl.haxx.se/。Libcurl具备线程安全、IpV6兼容、易于使用的特点。本文档... 阅读全文

posted @ 2014-01-09 14:38 阳台 阅读(2510) 评论(0) 推荐(0) 编辑

c语言中-----分配内存函数
摘要:原型: void * realloc(void *p, size_t size); realloc 可以对给定的指针所指的空间进行扩大 或者 缩小, 原有内存的数据保持不变。当然,对于缩小,则缩小部分的那一部分的内容会丢失; realloc 并不保证调整后的内存空间 和原来的内存空间保持同一内存地址。 而且 realloc 返回值很可能的是一个新的地址;这是因为realloc是从堆上分配内存的, 当扩大一块内存空间时,realloc直接从堆上现存的数据后面的那些字节中获得附加字节空间;但是如果数据后面的字节空间不够的话,那么就使用堆上第一个有足够大小的自由块,现存的数据拷贝到新的位置,而... 阅读全文

posted @ 2014-01-09 13:55 阳台 阅读(318) 评论(0) 推荐(0) 编辑

关于typedef之四种用途 和 两个陷进
摘要:typedef用来声明一个别名,typedef后面的语法,是一个声明。本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人 不在少数。罪魁祸首又是那些害人的教材。在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全。的确,这种形式在所有形式中是最简单的,但却没有对 typedef进一步解释,使得不少人用#define的思维来看待typedef,把int与PARA分开来看,int是一部分,PARA是另一部分, 但实际上 阅读全文

posted @ 2014-01-08 18:30 阳台 阅读(549) 评论(0) 推荐(0) 编辑

Libcurl安装及编译
摘要:1.安装curl wget http://curl.haxx.se/download/curl-7.26.0.tar.gz tar -zxvf curl-7.26.0.tar.gz cd curl-7.26.0 ./configure --prefix=/usr/local/curl make make install 这里需要root权限2.查看当前已安装的curl版本 curl -V3.如果当前系统已经安装旧版本的curl而不想覆盖,或者没有root权限,可将curl安装到本地目录,即:修改prefix=后面的路径为:/home/目标目录。查看本地目录的版本需要进入目标目... 阅读全文

posted @ 2014-01-08 16:57 阳台 阅读(2181) 评论(0) 推荐(0) 编辑

linux线程之pthread_join和pthread_detach
摘要:在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死。在 被其他线程回收之前,它的存储器资源(例如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 默认情况下,线程被创建成可结合的。为了避免存储器泄漏,每个可结合线程都应该要么被显示地回收,即调用pthread_join;要么通过调用pthread_detach函数被分离。int pthread_join(pthread_t tid, void**thread_return); 若成功则返回0,若出错则为非 阅读全文

posted @ 2014-01-08 10:22 阳台 阅读(1094) 评论(0) 推荐(0) 编辑

Linux系统源码安装过程中的prefix选项
摘要:在linux和unix环境中,源码安装是最常用的软件安装方式,一些软件除了提供源码外,也提供各种发行版的二进制安装包(如基于redhat包管理工具的rpm包),但强烈建议使用源码安装方式。原因是:(1)没有类似rpm那样让人恼 火的包依赖关系,(2)源码安装灵活自由,适用于不同的平台,维护也十分方便。源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure)。Configure是个可执行脚本,他有很多选项,使 用命令./configure –help输出周详的选项列表, 阅读全文

posted @ 2014-01-04 16:50 阳台 阅读(407) 评论(0) 推荐(0) 编辑

linux之线程之互斥
摘要:线程概述: 其实在Linux中,新建的线程并不是在原先的进程中,而是系统通过一个系统调用clone()。该系统copy了一个和原先进程完全一样的进程,并在这 个进程中执行线程函数。不过这个copy过程和fork不一样。copy后的进程和原先的进程共享了所有的变量,运行环境。这样,原先进程中的变量变... 阅读全文

posted @ 2014-01-03 19:06 阳台 阅读(533) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示