Linux/C
yyyzlf
这个作者很懒,什么都没留下…
展开
-
vim插件
<br /><br />以下是滇狐收集和整理的一些有用的 VIM 插件, 大部分插件都有自己详细的说明书, 因此这里就不详细介绍每个插件的安装和使用方法了。 通过这些插件, VIM 能够变成一个非常强大的平台, Happy VIMming! 如果想详细了解默认的插件插件安装路径, 请看这里。1 程序设计1.1 Tag List<br />下载地址: 官方站点<br />官方描述: The “Tag List” plugin is a source code browser plugin for Vim an转载 2011-04-15 14:47:00 · 1075 阅读 · 0 评论 -
man 帮助
部 分描 述1用户命令的使用方法,可以使用的参数等2系统调用只有系统才能执行的函数3库调用大多是libc函数,如qsort(3)4设备和特殊文件5文件格式和约定,比如/etc/passwd及其原创 2010-05-10 15:04:00 · 421 阅读 · 0 评论 -
自己写的strtok
<br />#include "stdio.h"char* strtok(char *s,char *delim){ static char *last = s;//保存剩余字符串 char *start=NULL;//每次返回字符串的起始地址 char *str=NULL; if (last==NULL) { return NULL; } if (s==NULL) start = last; else start = s;//字符串不为原创 2010-07-04 22:47:00 · 1568 阅读 · 0 评论 -
socket编程结构体变量
sockaddr结构体sockaddr的缺陷:sa_data把目标地址和端口信息混在一起了struct sockaddr { unsigned short sa_family; char sa_data[14]; }; sa_family是通信类型,最常用的值是 "AF_INET"sa_data14字节,包含套接转载 2010-05-05 21:37:00 · 1206 阅读 · 0 评论 -
C++强制类型转换
标准c++中主要有四种强制转换类型运算符: const_cast,reinterpret_cast,static_cast,dynamic_cast等等。 1)static_cast(a) 将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。 表达式static_cast(a), a的值转换为模板中指定的类型T。在运行时转换过程中,不进行类型检查原创 2010-04-01 16:43:00 · 545 阅读 · 2 评论 -
freetype使用
Freetype的使用相对比较简单: 1. 包含freetype的头文件。#include #include FT_FREETYPE_H 2. 初始化freetypeFT_Library library;error = FT_Init_FreeType( &library );转载 2010-03-31 16:45:00 · 1197 阅读 · 1 评论 -
select套接字准备好的条件
条件可读吗?可写吗?异常吗?有数据可读关闭连接的读一半给监听套接口准备好新连接OKOKOK 有可用于写的空间关闭连接的写一半 OKOK 待处理错误OK原创 2010-02-25 15:19:00 · 588 阅读 · 0 评论 -
linux 动态链接库加载
Linux 动态链接Linux 中的应用程序以以下两种方式之一链接到外部函数:要么在构建时与静态库( lib*.a ) 静态地链接,并且将库代码包含在该应用程序的可执行文件里;要么在运行时与共享库( lib*.so ) 动态地链接。通过动态链接装入器,将动态库映射进应用程序的可执行内存中。在启动应用程序之前,动态链接装入器将所需的共享目标库映射到应用程序的内存,或者使用系统共享的目标并为应用程转载 2010-02-22 16:19:00 · 1585 阅读 · 0 评论 -
linux select 异步聊天程序,比较好
什么是异步通讯?就是通讯任意一方可以任意发送消息,有消息来到时会收到系统提示去接收消息。这里要用到select函数。使用步骤如下:1、设置一个集合变量,用来存放所有要判断的句柄(file descriptors:即我们建立的每个socket、用open打开的每个文件等)2、把需要判断的句柄加入到集合里3、设置判断时间4、开始等待,即select5、如果在设定的时间内有任何句柄状态变化了就马上返回,转载 2010-02-22 10:03:00 · 852 阅读 · 0 评论 -
suse samba配置
SuSE中samba配置过程借别人的思路,再稍微修饰一下文字,形成这篇“过程说明”文档。至于配置文件的修改则要参考前面的文章中提到的详细步骤。另注:之前一直无法从win客户机访问SuSE的ftp和samba,原来是防火墙没有关闭……首先要知道SMB是WINDOWS 下的一种访问其他计算机上文件的一种协议,在suse上samba的过程如下:首先建立一个用户的共享目录:转载 2010-05-18 09:35:00 · 4683 阅读 · 1 评论 -
Samba配置文件常用参数详解
Samba配置文件常用参数详解(二)关键字: samba smb passwd file = /etc/samba/smbpasswd 说明:用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。 username map = /etc/samba/smbusers 说明:用来定义用户名映射,比如可以将root换成administrator、admin等。不过转载 2010-05-19 10:21:00 · 1726 阅读 · 0 评论 -
内核中tcp状态
net/ipv4/tcp.c * Description of States: * * TCP_SYN_SENT sent a connection request, waiting for ack * * TCP_SYN_RECV received a connection request, sent ack, * waiti转载 2010-05-19 16:46:00 · 822 阅读 · 0 评论 -
public,private,protected
<br />class parent{public: parent(int var=-1) { m_nPub=var; m_nPtd=var; m_nPrt=var; }public: int m_nPub;protected: int m_nPtd;private: int m_nPrt;};//公有继承class child1:public parent{public: int GetPub(){return m_原创 2010-06-10 23:47:00 · 485 阅读 · 0 评论 -
小结
1.fork()为什么会返回2次 2.volatile作用3.文件描述符和文件指针区别。原创 2010-06-09 07:21:00 · 480 阅读 · 0 评论 -
内存调试MEMWATCH
<br />内存调试 - MEMWATCH<br /> <br />MEMWATCH 由 Johan Lindh 编写,是一个开放源代码 C 语言内存错误检测工具,您可以自己下载它(请参阅本文后面部分的参考资料)。只要在代码中添加一个头文件并在 gcc 语句中定义了 MEMWATCH 之后,您就可以跟踪程序中的内存泄漏和错误了。MEMWATCH 支持 ANSI C,它提供结果日志纪录,能检测双重释放(double-free)、错误释放(erroneous free)、没有释放的内存(unfreed memo转载 2010-06-01 15:04:00 · 1086 阅读 · 0 评论 -
linux socket开发基础
<br /> 这是关于如何用各种可以得到的接口为Linux开发网络程序的系列文章的第一篇。就像大多数Unix-based的操作系统一样,Linux支持将TCP/IP作为本地的网络传输协议。在这个系列中,我们假定你已经比较熟悉Linux上的C编程和Linux的一些系统知识诸如signals,forking等等。<br /> 这篇文章是关于如何用BSD套接口创建网络程序的基础介绍 。在下一篇中,我们会解决涉及到建立(网络)deamon进程的问题。而且今后的文章我们还会涉及到使用远程过程调用(RPC),以转载 2010-05-31 15:49:00 · 867 阅读 · 0 评论 -
SELECT设备超时用法小结
SELECT设备超时用法小结目前各平台通用的设置socket connect超时的办法是通过select(),具体方法如下:1.建立socket;2.将该socket设置为非阻塞模式;3.调用connect();4.使用select()检查该socket描述符是否可写;5.根据select()返回的结果判断connect()结果;6.将socket设回阻塞模式。转载 2010-05-27 10:02:00 · 5637 阅读 · 0 评论 -
GDB 调试
网上看的,比较好,转下来了。topGDB概述GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的转载 2010-05-21 09:29:00 · 504 阅读 · 0 评论 -
boost::shar_ptr使用
boost学习笔记一: 使用boost::shared_ptr做为线程的参数 使用linux下的线程创建函数pthread_create已久,在传递给它void*型的入口参数时,总是两种方式:1. 在堆中创建,传入参数指针至线程中,由线程内部释放或等待线程退出后再释放;2. 不在堆中创建或使用全局变量;虽然在各种书上提及这种方式转载 2010-05-21 11:47:00 · 1107 阅读 · 0 评论 -
getsockopt,setsockopt用法小结
套接口选项在前面的几章中,我们讨论了使用套接口的基础内容。现在我们要来探讨一些可用的其他的特征。在我们掌握了这一章的概念之后,我们就为后面的套接口的高级主题做好了准备。在这一章,我们将会专注于下列主题:如何使用getsockopt(2)函数获得套接口选项值如何使用setsockopt(2)函数设置套接口选项值如何使用这些常用的套接口选项得到套接口选项有时,一个程序需要确定为当前为一个套接口进行哪些转载 2010-05-20 09:37:00 · 1284 阅读 · 0 评论 -
send recv函数
send函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参转载 2010-02-22 15:18:00 · 726 阅读 · 0 评论 -
linux 网络编程----服务器模型
学习过《软件工程》吧.软件工程可是每一个程序员"必修"的课程啊.如果你没有学习过, 建议你去看一看. 在这一章里面,我们一起来从软件工程的角度学习网络编程的思想.在我们写程序之前, 我们都应该从软件工程的角度规划好我们的软件,这样我们开发软件的效率才会高. 在网络程序里面,一般的来说都是许多客户机对应一个服务器.为了处理客户机的请求, 对服务端的程序就提出了特殊的要求.我们学习一下目前最常用的服转载 2010-02-22 10:10:00 · 568 阅读 · 0 评论 -
select ,FD_ZERO,FD_SET,FD_CLR,FD_ISSET
select函数: 系统提供select函数来实现多路复用输入/输出模型。原型: #include #include select函数: 系统提供select函数来实现多路复用输入/输出模型。原型: #include #include转载 2010-02-20 16:58:00 · 888 阅读 · 0 评论 -
setsockopt函数
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制转载 2010-01-29 16:01:00 · 546 阅读 · 0 评论 -
findfirst,strncasecmp函数
findfirst函数的用法函数名称: findfirst 函数原型: int findfirst(char *fname,struct ffblk *ptr,int attrib) 函数功能: 寻找与fname相匹配的第一个文件名称 函数返回: 参数说明: ptr-保存查找到的文件信息 所属文件: #include #include int转载 2010-01-29 10:53:00 · 1868 阅读 · 0 评论 -
shell关键
有些变量用以表示脚本运行时的一些相关信息,这些变量一开始执行脚本时就会设定,并且不能被修改,被称作特定变量参数。如: n$0 当前脚本的文件名 n$# 当前脚本的参数个数 n$* 以一个单字符串显示所有向脚本传递的参数 n$$ 脚本运行的当前进程PID n$! 后台运行的最后一个进程的PID n$? 显示最后命令的退出原创 2010-01-26 08:52:00 · 431 阅读 · 0 评论 -
守护进程
由于守护进程的特点,编写守护进程程序必须遵守一定的规则。本节将阐述这些规则的要点,并给出相关代码。8.2.1 实现守护进程的步骤在Linux系统中,要编程实现一个守护进程必须遵守如下的步骤。1.让init进程成为新产生进程的父进程。调用fork函数创建子进程后,使父进程立即退出。这样,产生的子进程将变成孤儿进程,并被init进程接管,同时,所产生的新进程将变为在后台运行。2.转载 2010-01-29 09:23:00 · 1888 阅读 · 1 评论 -
linux信号机制signal
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一些基本的转载 2010-01-28 18:40:00 · 506 阅读 · 0 评论 -
[转]makefile调试
一个调试makefile文件的简便方法:那就是用make -p|tee make.out来输出make运行过程中产生的中间信息。make -n 就可以输出调试make 的运行——————一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编转载 2010-01-25 15:35:00 · 816 阅读 · 0 评论 -
[转]make使用详解
概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makef转载 2010-01-25 14:50:00 · 721 阅读 · 0 评论 -
linux 重定向
1. 标准输入的控制语法:命令例如:mail -s “mail test” das@163.com 题名称为mail test,送给收信人。2. 标准输出的控制语法:命令> 文件将命令的执行结果送至指定的文件中。例如:ls -l > list 将执行“ls -l” 命令的结果写入文件list 中。语法:命令>! 文件将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。例如:ls -l转载 2010-01-25 14:08:00 · 356 阅读 · 0 评论 -
套接字socket高级编程
在前面的几个部分里面,我们已经学会了怎么样从网络上读写信息了.前面的一些函数(read,write)是网络程序里面最基本的函数.也是最原始的通信函数.在这一章里面,我们一起来学习网络通信的高级函数.这一章我们学习另外几个读写函数. 6.1 recv和send recv和send函数提供了和read和write差不多的功能.不过它们提供 了第四个参数来控制读写操作. int re转载 2010-01-29 16:44:00 · 1401 阅读 · 0 评论 -
C语言可变参数
C语言中可变参数的用法 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() 这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是 可变的,例如我们可以有以下不同的调用方法: printf("%d",i); printf(转载 2010-01-29 10:01:00 · 484 阅读 · 0 评论 -
Linux多线程编程的基本的函数
函数原型: #include int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr, void *(*start_rtn)(void),void *restrict arg); 返回值:若是成功建立线程返回0,否则返回错误的编号 形式参转载 2010-02-01 16:38:00 · 668 阅读 · 0 评论 -
linux select 用法
select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On success, a file descriptor for the转载 2010-02-22 09:50:00 · 491 阅读 · 0 评论 -
INADDR_ANY,bind,htos(0)
INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。例如MontiVista Linux中在/usr/include/netinet/in.h定义为:/* Address to accept any incoming messages. */#define INADDR_ANY原创 2010-02-20 09:38:00 · 8856 阅读 · 0 评论 -
vi 常用
1.vi常用的几个键,备忘下v 选择要复制的内容y 复制d 剪切p 粘贴d 删除一个字符dd 删除一样gg 程序开始位置G 程序结尾:n 定位到第n行 2.makefile编译规则$@ 当前目标全名$* 代表删除了后缀的目标名(目标名称删除后缀)$ 3.编译规则-Wall 生成警告信息-shared 创建dll共享目标文件原创 2010-02-11 09:06:00 · 576 阅读 · 1 评论 -
linux lib 动态库(2)
Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。 Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Li转载 2010-02-03 17:17:00 · 706 阅读 · 1 评论 -
ld 用法----gcc 过程最后一步----链接
今天把vivi所用到的ld的用法都看懂了,常见的选项含义也清楚了。翻看了一下kernel的链接脚本,发现相当复杂,并且需要对全局有很好的把握,对整个的地址空间分配也必须清楚。这点暂时还做不到,属于后续工作。先把ld的基本用法总结一下,因为《Linkers and Loaders》还没有读完,所以暂时还不能作出总结。不过,对链接和加载已经有了更深入的认识。在读using ld时,很多地方自然就理转载 2010-02-03 16:45:00 · 16306 阅读 · 4 评论 -
linux lib 动态库
动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一转载 2010-02-03 10:08:00 · 2885 阅读 · 0 评论