
新手开发linux
文章平均质量分 66
tycoon1988
这个作者很懒,什么都没留下…
展开
-
使用splice实现零拷贝复制文件
splice是linux2.6内核中新增的零拷贝数据发送函数,主要用于将数据发送到管道 或 从管道中接收数据。于splice类似的零拷贝发送函数还有sendfile,不同的是sendfile是将数据通过socket发到对端。所谓零拷贝是指(与传统的read/write模式相比),在数据发送的过程中,不需要在用户态为数据申请buffer,也就是不会产生用户态、内核态之间的数据拷贝(moves da原创 2015-02-01 10:45:45 · 1100 阅读 · 0 评论 -
无插件Vim编程技巧 *******************
浏览代码首先,我们先从浏览代码开始。有时候,我们需要看多个文件,所以,传统的做法是,我们开多个tty终端,每个tty里用Vim打开一个文件,然后来回切换。这很没有什么效率。我们希望在一个Vim里打开多个文件,甚至浏览程序目录。浏览目录的命令很简单:(你也可以直接vim一个目录):E注意,是大写。于是,你会看到下面这样的界面:这个界面中,你可以用 j, k 键上下原创 2014-09-01 09:50:38 · 351 阅读 · 0 评论 -
Linux编程基础——后台进程 守护进程
Linux编程基础——后台进程后台启动 默认情况下,进程是在前台运行的,这时就把shell给占据了,我们无法进行其它操作。对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的。 tianfang > run & [1] 11319 tianfang > 进程切换到后台的时候,我们把它称为job。切换转载 2014-09-01 10:41:47 · 435 阅读 · 0 评论 -
Omnicompletion vim补全
4.MiniBufExplorer 在Visual Studio或Eclipse中你打开的缓存会以tab的形式列在窗口的顶端或底部,在Vim中插件MiniBufExplorer来实现此功能。下载 minibufexpl.vim并将其放在plugin目录下。接着在vimrc中添加如下命令:let g:miniBufExplMapWindowNavVim = 1let g:miniBu原创 2014-09-01 14:07:51 · 858 阅读 · 0 评论 -
用Telnet客户端调试TCPSocket程序
以前经常用Telnet去水木,一直以为Telnet是一个字一个字的发送,估计协议挺复杂。嗯,现在也没有认真看看相关的RFC,所以Telnet的协议我还是不甚了解,但是最近写程序时被高人指点用Telnet测一下,发现Telnet居然如此便利和简单。其实Telnet除了逐字发送之外,还有逐行发送的方式。其实这个无所谓,因为TCP协议的设计在思想上是想实现一种流的模型,让用户把数据当成流使用,而不是原创 2014-09-01 10:25:48 · 10153 阅读 · 0 评论 -
终端中常用的shell 命令
其他控制键:Ctrl+s:使终端发呆,静止,可以使快速输出的终端屏幕停下来。Ctrl+q:退出Ctrl+s引起的发呆。Ctrl+z:使正在运行在终端的任务,运行于后台。 (可用fg恢复)Ctrl+c:中断终端中正在执行的任务。Ctrl+d: 在空命令行的情况下可以退出终端。Ctrl+[ :相当于Esc键。Esc键:原创 2014-08-19 13:06:33 · 455 阅读 · 0 评论 -
文件锁 记录锁
下面介绍两种两种Linux下对文件加锁的两种方式一、文件锁思想:假设有一个文件A。创建一个加锁文件B,通过不同的进程互斥的访问此加锁文件B达到互斥的访问文件A的目的。源码如下原创 2014-09-23 10:40:56 · 464 阅读 · 0 评论 -
Linux shell脚本 #!/bin/sh和$bash
#! /bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。 $bash $表示系统提示符,$ 表示此用户为普通用户,超级用户的提示符是#,bash是shell的一种,是linux下最常用的一种shell,$bash的意思是执行一个子shell,此子shell为bash。原创 2014-08-15 15:56:24 · 729 阅读 · 0 评论 -
非阻塞connect的实现
步骤1: 设置非阻塞,启动连接实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的。这样调用 connect 可以立刻返回,根据返回值和 errno 处理三种情况:(1) 如果返回 0,表示 connect 成功。(2) 如果返回值小于 0, errno 为 EINPROGRESS, 表示连接 建立已经启动但是尚未完成。这是期望的结果,不是真正的错误。原创 2014-09-12 19:34:48 · 532 阅读 · 0 评论 -
《Unix环境高级编程》:单实例守护进程的实现
//《APUE》程序13-1:初始化一个守护进程//《APUE》程序13-2:保证只运行某个守护进程的一个副本//《APUE》程序14-5:在文件整体加锁#include #include #include #include #include #include #include #include #include #include #includ原创 2014-09-23 10:44:57 · 419 阅读 · 0 评论 -
vim 多标签
多标签直接在编辑的时候输入:vim -p 要编辑的文件名如vim -p * 就是编辑当前目录的所有文件多个标签间进行切换时向右切换gt,向左切换用gT在编辑的时候想增加一个标签就可以:tabnew filename:tabc 关闭当前的tab:tabo 关闭所有其他的tab:tabs 查看所有打开的tab:tabp原创 2014-08-29 20:58:15 · 795 阅读 · 0 评论 -
vim使用—移动到文件开始和结束位置和当前位置(gg,G)、快速定位到当前光标所在变量或函数的定义处(gd)、自动对齐C和C++程序(先gg再=再G)、自动补全变量名,函数名和字符串ctrl+n或ct
1、将光标移动到文件的开始位置或结束位置: gg 将光标移动到文件的开始位置。 G 将光标移动到文件的最后一行。 对当前行做标记,例如ma,即标记当前行为a行,mb,即标记当前行为b行,mc,即...等等。 要回到a行使用'a。要回到b行使用'b。1.1 vim原创 2014-08-29 19:52:59 · 4112 阅读 · 0 评论 -
vim 跳转到函数、变量定义处:
跳转到函数、变量定义处:[+ctrl+i 跳转到函数、变量和#define[+ctrl+d 跳转到#define处ctrl+i 向前跳到前几次光标位置ctrl+o 向后跳到后几次光标位置函数体跳转:[[]][]][{}原创 2014-08-29 20:43:00 · 21317 阅读 · 0 评论 -
Vim 使用寄存器
:reg a--- Registers ---"a 服务器于客户端建立的连接对象原创 2014-08-29 18:07:53 · 543 阅读 · 0 评论 -
VIM编辑多个文件
在本章前,你都是为每一个文件启动一次 Vim 的。实际上还有其它办法。如下命令就可以在 Vim 中打开另一个文件: :edit foo.txt你可以用任何其它文件名取代上面的 "foo.txt"。Vim 会关闭当前文件并打开另一个。但如果当前文件被修改过而没有存盘, Vim 会显示错误信息而不会打开这个新文件: E37: No write since las原创 2014-08-29 17:34:28 · 5899 阅读 · 0 评论 -
tar 解压缩命令
tar 解压缩命令tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。原创 2014-08-29 13:22:19 · 472 阅读 · 0 评论 -
原始套接口的ping命令编程
原始套接口(SOCK_RAW)允许对较低层协议(如IP或ICMP)进行直接访问,常用于检验新的网络协议实现,也可用于测试新配置或安装的网络设备。创建一个原始套接口时,一般格式如下: SOCKET sockid=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);//ICMP协议SOCKET sockid=socket(AF_INET,SOCK_RAW,IPPRO原创 2014-09-11 15:57:14 · 501 阅读 · 0 评论 -
在C/C++程序中打印当前函数调用栈
最近调试程序学到的几个挺有用的函数,分享一下,希望对用C/C++的朋友有所帮助!1. 调用栈系列下面是函数原型:1234#include "execinfo .h"int backtrace(void **buffer, int size);char **backtrace_symbols(void *const *buffer, int s原创 2014-08-28 15:13:24 · 1810 阅读 · 0 评论 -
通过telnet手工输入HTTP请求
http://blog.chinaunix.net/uid-20644632-id-68039.html原创 2014-09-01 10:30:27 · 582 阅读 · 0 评论 -
VIM 查找替换
.查找替换?12345678/android 查找android,然后如果按n,表示向下查找,如果按N,表示向上查找?android 查找android,然后如果按n,表示向上查找,如果按N,表示向下查找 shift+8原创 2014-09-01 12:05:38 · 396 阅读 · 0 评论 -
VIM的工程管理(转)
Vim需要额外工程管理插件吗?答案是完全不用。 假设我们有一个工程,放在test目录下,里面有main.c, a.c, b.c ...1. 创建"工程文件"的过程(1)进入test目录,启动vi(2)用:e命令分别打开所有需要加入功能的文件(3)用:mksession! test.vim创建"工程文件"(4)退出vim.2. 打开工程文件的过程用vim -S test.vim原创 2014-09-01 14:06:47 · 1520 阅读 · 0 评论 -
Socket异步句柄 ****************88
in事件 1.数据可读2.原创 2014-08-15 17:56:49 · 556 阅读 · 0 评论 -
用DNAT实现外网访问内网web服务
http://zhangyic.blog.51cto.com/1819414/347575原创 2014-09-04 17:14:47 · 1879 阅读 · 0 评论 -
Linux Network Namespaces
Basic network namespace commandsThe tool to handle network namespaces is the command ip. Some users may know this tool as the replacement for the deprecated tools ifconfig, route, netstat…. You must原创 2014-09-04 16:29:23 · 593 阅读 · 0 评论 -
Linux网络工程师资料
http://dllglvzhenfeng.blog.163.com/blog/static/163077779201361384411329/原创 2014-09-03 10:08:05 · 374 阅读 · 0 评论 -
如何使用strace+pstack利器分析程序性能
如何使用strace+pstack利器分析程序性能 http://www.cnblogs.com/bangerlee/archive/2012/02/20/2356818.html 引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代原创 2014-09-03 18:25:29 · 2594 阅读 · 0 评论 -
ls -l |grep "^-"|wc -l 程序问题的定位—strace -p pid(跟踪系统调用)gdb -p pid(调试)lsof -p pid(查看当前进程打开的文件描述符) ps -e
查看某文件夹下文件的个数ls -l |grep "^-"|wc -l或find ./company -type f | wc -l查看某文件夹下文件的个数,包括子文件夹里的。ls -lR|grep "^-"|wc -l查看某文件夹下文件夹的个数,包括子文件夹里的。ls -lR|grep "^d"|wc -l说明:ls -l长列表输原创 2014-09-03 18:11:52 · 5628 阅读 · 0 评论 -
云计算平台管理的三大利器Nagios、Ganglia和Splunk
http://www.programmer.com.cn/11477/原创 2014-09-02 16:23:40 · 403 阅读 · 0 评论 -
ps 命令
ps auwx可以查看系统中僵尸进程,僵尸进程的状态会被标注为“Z”。或者 ps axf 以树形展示进程表 ps axm 列出线程,linux下进程线程一致 ps aux 列出进程的详细信息原创 2014-09-02 09:52:26 · 1499 阅读 · 0 评论 -
syslog客户端编程
syslog客户端编程既然syslog是一个标准的协议,所以客户端和服务器端可以独立开发。对于应用程序员来说,重新开发一个syslog服务器的可能性不大,但是在程序中使用syslog的日志功能非常常见,也就是客户端开发。客户端有两种方式开发,一是完全基于协议从底层开发,也就是直接写unix域套接字、向UDP514发送定制消息。这样做往往比较麻烦,所以大多数语言都提供了库函数供上层应用使原创 2014-09-02 10:37:32 · 3314 阅读 · 1 评论 -
控制终端
在linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程,都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。原创 2014-09-02 10:09:37 · 1317 阅读 · 0 评论 -
Linux下检测本机的端口是否被占用:netstat –apn | grep 8080
要测试远程主机上的某个端口是否开启,无需使用太复杂的工作,windows下就自带了工具,那就是telnet。ping命令是不能检测端口,只能检测你和相应IP是否能连通。1 安装telnet。win7下就没有telnet,在cmd下输入telnet提示没有该命令。进入控制面板---->程序---->打开或关闭windows功能。然后等一段时间,在出来的对话框把telnet客户端和teln原创 2014-09-02 16:19:31 · 5119 阅读 · 0 评论 -
Linux系统调用--getrlimit()与setrlimit()函数详解
功能描述:获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。用法:#include int getrlimit(int resource, s原创 2014-09-02 10:53:55 · 544 阅读 · 0 评论 -
服务器开发之 Daemon 和 Keepalive
http://m.oschina.net/blog/116454原创 2014-09-02 09:54:09 · 742 阅读 · 0 评论 -
一个具有类似于IDE功能的容易安装的VIM 脚本安装IDEminibuffer, taglist, tasklist, nerdtree等等
http://flau.me/2013/06/30/vimide/原创 2014-09-01 13:55:24 · 595 阅读 · 0 评论 -
vim buffer.
When I first started using Vim the thing that confused me the most was buffers. The editors that I used before simply showed windows or tabs for each open file -- if a file wasn't visible it was close原创 2014-09-01 13:56:45 · 489 阅读 · 0 评论 -
所需即所获:像 IDE 一样使用 vim 效果展示*****************888
http://www.yangyangwithgnu.net/use_vim_as_ide/原创 2014-09-01 09:54:26 · 537 阅读 · 0 评论 -
vim 回到上次编辑的位置
ctrl +Octrl + I(i)When you move your cursor to a particular position in a file, Vim remembers this and lets you move around between where you are where you were. CTRL-O goes to the older p原创 2014-09-01 16:59:19 · 6582 阅读 · 0 评论 -
tcpdump
tcpdump默认只抓取一个包的前68或96个字节,如果要查看更多内容,需要加"-s number"选项,下面是我最常用的选项:-i any : 监听所有接口,-n : 不解析主机名-nn : 不解析主机名和端口名原创 2014-09-11 19:57:39 · 371 阅读 · 0 评论 -
g++ -g -o stack -rdynamic 以及nm命令
#include #include #include void f(){ void *array[16]; size_t size; char **strings; size_t i; size = backtrace (array, 16); strings = backtrace_s原创 2014-08-28 11:52:03 · 1802 阅读 · 0 评论