Linux下的应用编程
文章平均质量分 80
与时俱进2014
这个作者很懒,什么都没留下…
展开
-
linux signal
最近同事的程序设计过程中用到了Linux的signal机制,从而引发了我对Linux中signal机制的思考。Signal机制在Linux中是一个非常常用的进程间通信机制,很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断,因此,在实时性方面还是相对比较高的。Linux中signal机制的模型可以采用下图进行描述。转载 2016-03-24 14:11:03 · 1157 阅读 · 0 评论 -
cgi的环境变量
SERVER_NAME CGI脚本运行时的主机名和IP地址.SERVER_SOFTWARE 你的服务器的类型如: CERN/3.0 或 NCSA/1.3.GATEWAY_INTERFACE 运行的CGI版本. 对于UNIX服务器, 这是CGI/1.1.SERVER_PROTOCOL 服务器运行的HTTP协议. 这里当是HTTP/1.0.SERVER_PORT 服转载 2013-05-09 09:02:49 · 634 阅读 · 0 评论 -
va_start ,va_arg和va_end的应用
stdarg.h中三个宏va_start ,va_arg和va_end的应用 #include#include constint N=5;usingnamespace std; voidStdarg(inta1,...){ va_listargp; inti; int ary[N];转载 2012-12-29 09:09:12 · 398 阅读 · 0 评论 -
PPPoE工作原理以及PPPoE帧格式
PPPoE工作原理以及PPPoE帧格式分类: 协议 2011-12-06 14:12 176人阅读 评论(0)收藏 举报PPPoE工作原理以及PPPoE帧格式PPPoE协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得PPPoE终结端(在局端的ADSL设备上)的以太网MAC地址,并建立一个惟一的PPPoESESSION-ID。发转载 2012-12-17 09:18:28 · 1203 阅读 · 0 评论 -
unlink
Linux中link,unlink,close,fclose函数详解linux中每一个文件,都可以通过一个struct stat的结构体来获得文件信息,其中一个成员st_nlink代表文件的链接数。当通过shell的touch命令或者在程序中open一个带有O_CREAT的不存在的文件时,文件的链接数为1。通常open一个已存在的文件不会影响文件的链接数。open的作用只是使调用进程与原创 2012-12-29 09:35:41 · 624 阅读 · 0 评论 -
strtoul strtol(字符串转换为long) strtod(字符串转换为 double)
1 #include 2 #include 3 #include 4 5 int main() 6 { 7 char szInput[256]; 8 unsigned long ul; 9 printf("please input a number:\n");10 fgets (szInput, 256, stdin);11 ul转载 2012-12-29 09:17:19 · 2230 阅读 · 0 评论 -
iPtables的指南连接
下面的链接是IPTABLES1.1.1.9的指南。http://man.chinaunix.net/network/iptables-tutorial-cn-1.1.19.html#MANGLETABLE转载 2012-12-10 10:14:24 · 428 阅读 · 0 评论 -
共享内存
共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。在/proc/sys/kernel/目录下,记录着共享内存的一些限制,如一个共享内存区的最大字节数shmmax,系统范围内最大共享内存区标识符数shmmni等,可以手工对其调整,但不推荐这样做。一、应用共享内存的使用,主要有以下几个API:ftok()、shmget()、shmat()、shmdt()及shmctl()。转载 2012-11-26 10:36:04 · 402 阅读 · 0 评论 -
system
SYSTEM的用法分类: c++ xcode2012-07-25 16:14 1126人阅读 评论(0)收藏 举报曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,转载 2012-12-07 17:20:04 · 768 阅读 · 0 评论 -
【IPC通信】基于管道的popen和pclose函数
【IPC通信】基于管道的popen和pclose函数3人收藏此文章,我要收藏发表于1年前(2011-11-12 23:20) , 已有1608次阅读 ,共0个评论标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。popen函数还创建一个管道用于父子进程间通信。子进转载 2012-12-07 17:19:26 · 373 阅读 · 0 评论 -
Linux下截图工具也玩命
在Linux下很多软件使用命令就可以很好的操作,截图软件也不例外。刚好要截图使用一下,就找到了这款小巧的却很使用的Linux下的截图工具,它就是scrot。 如何安装及使用呢?且看下文。1.安装篇很简单,想安装其他软件一样,Fedora下 yum install scrot , Ubuntu下apt-get install scrot就可以了。2.使用篇一般用法转载 2013-05-09 09:31:39 · 689 阅读 · 0 评论 -
SQL
MySQL客户端/服务器协议提供了预处理语句。该功能采用了由mysql_stmt_init()初始化函数返回的MYSQL_STMT语句处理程序数据结构。对于多次执行的语句,预处理执行是一种有效的方式。首先对语句进行解析,为执行作好准备。接下来,在以后使用初始化函数返回的语句句柄执行一次或多次。对于多次执行的语句,预处理执行比直接执行快,主要原因在于,仅对查询执行一次解析操作。在直接执行的情况下转载 2013-05-09 11:04:38 · 1126 阅读 · 0 评论 -
文件IO
在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内核代码。 阐述之前,要先有个大视角,让我们站在万米高空,鸟瞰我们的文件IO,它们设计是分层的,分层有2个好处,一是架构清晰,二是解耦。让我们看一下下面这转载 2016-03-06 11:41:48 · 539 阅读 · 0 评论 -
修改进程名字
每一个c程序都有个main函数,作为程序启动入口函数。main函数的原型是int main(int argc , char *argv[]);其中argc表示命令行参数的个数;argv是一个指针数组,保存所有命令行字符串。Linux进程名称是通过命令行参数argv[0]来表示的。Linux 还有环境变量参数信息,表示进程执行需要的所有环境变量信息。通过全局变量Char **envi转载 2015-12-22 09:20:55 · 4476 阅读 · 0 评论 -
umask
umask#include mode_t umask(mode_t cmask);说明:其中cmask对应下面的9个位的“或”值:S_IRUSR 用户读S_IWUSR 用户写S_IXUSR 用户执行S_IRGRP 组读S_IWGRP 组写S_IXGRP 组执行S_IROTH 其他读S_IWOTH 其他写转载 2013-12-23 14:55:32 · 644 阅读 · 0 评论 -
getrlimit/setrlimit
#include int getrlimit(int resource, struct rlimit *rlp);int setrlimit(int resource, const struct rlimit *rlp);描述在操作系统中,我们能够通过函数getrlimit()、setrlimit()分别获得、设置每个进程能够创建的各种系统资源的限制使用量。转载 2013-12-23 14:59:06 · 721 阅读 · 0 评论 -
Linux系统调用--getrlimit()与setrlimit()函数详解
获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。用法:#include int getrlimit(int resource, struct r转载 2013-09-12 09:21:37 · 735 阅读 · 0 评论 -
system的返回值
例:status = system("./test.sh"); 1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为shell返回值。2、如何正确判断t转载 2013-07-02 09:33:52 · 1005 阅读 · 0 评论 -
C语言宏中"#"和"##"的用法
C语言宏中"#"和"##"的用法 在查看linux内核源码的过程中,遇到了许多宏,这里面有许多都涉及到"#"和"##",因此,在网上搜索了一些资料,整理如下:一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include #include using namespace std; #define S转载 2013-05-27 10:19:38 · 1496 阅读 · 0 评论 -
c数据转换
个网站讲的是数据类型的转换,你好好看看:http://hi.baidu.com/jm_shen/blog/item/324147429d1ee71a72f05d50.html/>1.整型数据类型C定义了5种整型数据类型。整型数据类型表序号 类型名称 说明 字节数 取值范围1 signed char 有符号的单字节整数类型 1 -128~+1272 short int 短转载 2013-05-24 09:19:00 · 1247 阅读 · 0 评论 -
pthread_rwlock_t
使用读写锁配置读写锁的属性之后,即可初始化读写锁。以下函数用于初始化或销毁读写锁、锁定或解除锁定读写锁或尝试锁定读写锁。下表列出了本节中讨论的用来处理读写锁的函数。表 4–9 处理读写锁的例程操作相关函数说明初始化读写锁pthread_rwlock_init 语法读取读写锁中的锁转载 2013-05-10 14:37:24 · 941 阅读 · 0 评论 -
linux下时间有关的函数和结构体
1、时间类型。Linux下常用的时间类型有4个:time_t,struct timeb, struct timeval,struct timespec,clock_t, struct tm.(1) time_t是一个长整型,一般用来表示用1970年以来的秒数.该类型定义在中.一般通过 time_t time = time(NULL); 获取.(2) st原创 2012-11-23 15:35:16 · 381 阅读 · 0 评论 -
signal
信号集int sigemptyset( sigset_t *set)int sigfillset(sigset_t *set)int sigaddset(sigset_t *set, int signum)int sigdelset(sigset_t *set, int signum)int s转载 2012-11-23 15:33:02 · 375 阅读 · 0 评论 -
用iptables的raw表解决ip_conntrack: table full, dropping packet的问题
用iptables的raw表解决ip_conntrack: table full, dropping packet的问题1) 什么是raw表?做什么用的?iptables有5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING,4个表:filter,nat,mangle,raw.4个表的优先级由高到低的顺序为:raw-->mangle-转载 2012-12-04 17:40:45 · 601 阅读 · 0 评论 -
Linux网络编程之广播
Linux网络编程之广播 1.概念前面介绍的TCP,UDP都是单播方式,即一对一.而广播是一台主机向局域网内的所有主机发送数据。这时,同一网段的所有主机都能接收到数据。发送广播包的步骤大致如下:(1)确定一个发送广播的接口,如eth0(2)确定广播的地址,通过ioctl函数,请求码设置为SIOCGIFBRDADDR得到广播的地址(3)使用这个广播地址进行广播转载 2012-11-21 14:42:08 · 568 阅读 · 0 评论 -
Tcpdump的用法
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命令实例默认启动tcpdump普通情原创 2012-11-21 13:59:23 · 1695 阅读 · 0 评论 -
pcap的用法
1 #include 2 3 char errbuf[PCAP_ERRBUF_SIZE]; 4 5 pcap_t *pcap_open_live(const char *device, int snaplen,int promisc, int to_ms, char *errbuf) 6 pcap_t *pcap_open_dead(int linktype,原创 2012-11-21 14:02:22 · 9327 阅读 · 0 评论 -
linux 守护进程编写
linux编程-守护进程编写 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程转载 2012-11-21 11:03:16 · 331 阅读 · 0 评论 -
原始套接字
基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。换句话说,我们对它们头部操作的空间非常受限,只能使用它们已经开放给我们的诸如源、目的I转载 2012-11-26 11:29:33 · 474 阅读 · 0 评论 -
tftp
一、tftp协议介绍 TFTP是一个传输文件的简单协议,它其于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的 时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中 有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8转载 2012-11-26 11:28:16 · 693 阅读 · 0 评论 -
信号灯
一、信号灯简介Linux支持System V的信号灯(semaphore),是一种进程间通信的方式,只不过它和管道、FIFO或者共享内存不一样,信号灯主要用于同步或者互斥对共享资源的访问,它的发明来源于火车运行系统中的"信号灯",利用信号灯可以实现"PV"操作这种进程间同步进制。P操作时获得资源,将信号灯的值减1,如果结果不为负则执行完毕,进程获得资源,否则进程睡眠以等待的进程释放转载 2012-11-26 11:20:33 · 774 阅读 · 0 评论 -
信号量
1.信号量的概念 信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。 当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求,等于0,无资源可用,进程会进入睡眠状态直至资源可用。 当进转载 2012-11-26 10:45:52 · 631 阅读 · 0 评论 -
Daemon函数的用法
Daemon函数的用法说明:让一个程序后台运行。原型:#include int daemon(int nochdir, int noclose); 参数:当nochdir为零时,当前目录变为根目录,否则不变;当noclose为零时,标准输入、标准输出和错误输出重导向为/dev/null,也就是不输出任何信息,否则照样输出。返回值:deamon(转载 2012-11-21 11:26:59 · 631 阅读 · 0 评论 -
Linux文本编辑器Vim/Vi
Linux文本编辑器Vim/Vi (最常用的,最实用的命令)Linux插入命令a 在光标之后插入字符A 把光标移动到行首尾进入插入模式i 在光标之前插入字符I 把光标移动到行首并进入插入模式o 在光标下插入新行O 在光标上插入新行Linux定位命令h左 j下 k上 L右$ 移至行尾0移至行首(数子0)H 移至屏幕的上端M转载 2012-11-21 16:57:18 · 450 阅读 · 0 评论 -
哈希链表
/* * ===================================================================================== * * Filename: hash.c * * Description: hash表 * * Version: 1.0 * Crea转载 2012-11-23 12:12:01 · 578 阅读 · 0 评论 -
哈希算法
简介哈希方法学哈希函数和素数位偏向各种形式的哈希常用的哈希函数各版本哈希代码下载哈稀函数按照定义可以实现一个伪随机数生成器(PRNG),从这个角度可以得到一个公认的结论:哈希函数之间性能的比较可以通过比较其在伪随机生成方面的比较来衡量。一些常用的分析技术,例如泊松分布可用于分析不同的哈希函数对不同的数据的碰撞率(collision rate)。一般来说,对任意一类的数据存在转载 2012-11-23 11:49:42 · 638 阅读 · 0 评论 -
心跳包
Socket编程中:心跳包的实现机制 心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。 在TCP/IP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2原创 2012-11-23 10:57:11 · 583 阅读 · 0 评论 -
多播
1.概念: 多播是对需要接收该流量的客户端发送的一组数据,是一种无害的广播。2.优点: 不影响不接收该多播数据的主机,能够节约网络带宽,降低主机处理负担。3.多播地址: 224.0.0.0--239.255.255.255,没有像单播ip段那样有广播地址和网络地址之分了。 具体:224.0.0.0--224.0.0.255 本地保留,给知名协议使用,ttl=1。其中原创 2012-11-23 10:48:18 · 422 阅读 · 0 评论 -
linux下广播的写法
只有UDP才能设置广播,TCP没有广播只能是单播。服务器端#include #include #include #include #include #include #include #include int main(int argc,char *argv[]){ int socket_fd; int n; i原创 2012-11-23 10:10:44 · 521 阅读 · 0 评论 -
LINUX环境并发服务器的三种实现模型
LINUX环境并发服务器的三种实现模型1 循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:·循环服务器:服务器在同一时刻只能响应一个客户端的请求·并发服务器:服务器在同一时刻可以响应多个客户端的请求1.1 UDP循环服务器的实现方法:UDP循环服务器每次从原创 2012-11-21 16:43:36 · 1024 阅读 · 0 评论