C/C++
文章平均质量分 79
wsss2009
这个作者很懒,什么都没留下…
展开
-
linux 中解析命令行参数 (getopt_long用法)
getopt_long支持长选项的命令行解析,使用man getopt_long,得到其声明如下: #include int getopt_long(int argc, char * const argv[], const char *optstring, const struct option转载 2013-12-31 01:17:47 · 531 阅读 · 0 评论 -
curses编程初识
curses 的历史与版本: cureses 最早是由柏克莱大学的 Bill Joy 及 Ken Arnold 所发展出来的. 当时发展此一函式库主要原因是为了提高程式对不同终端机的相容性而设计的. 因此, 利用 curses 发展出来的程式将和您所使用的终端机无关. 也就是说, 您不必担心您的程式因为换了一部终端机而无法使用. 这对程式设计师而言, 尤其是网路上程式的撰写, 是件相当重要的一转载 2014-02-05 21:46:36 · 1828 阅读 · 0 评论 -
编写可变参数c函数
前言:本文在很大程度上改编自网友kevintz的“C语言中可变参数的用法”一文,在行文之前先向这位前辈表示真诚的敬意和感谢。一、什么是可变参数我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:int printf( const char* format, ...);它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变转载 2014-03-12 11:48:45 · 561 阅读 · 0 评论 -
shellcode 之 栈溢出
在C、C++语言中,没有考虑检查缓冲区的内在边界,所以使栈溢出成为可能。用户故意提交超出缓冲区范围的数据。这种情形可导致不同的后果,包括程序崩溃或强制令程序执行用户提交的指令。 ESP:栈顶寄存器。注意:POP只改变ESP的值,而不改写或删除栈上的数据,它只是把栈上的数据复制到操作对象里。EBP:栈底寄存器。通常以它为基址来计算其他的地址。也称为“帧指针”。EIP:扩展指令指针。E转载 2014-04-14 15:59:39 · 663 阅读 · 0 评论 -
shellcode 之 栈溢出 2
本文给出一个完整的利用缓冲区溢出取得root shell的示例,只要你照着步骤一步步下来,就不会觉得它的神秘,而我的意图正在于此。如果看不明白什么地方,可以在这里提问,mail to: ,或者到绿色兵团的Unix安全论坛上提问,tt在那里。水木清华97年以前就大范围高水平讨论过缓冲区溢出,你没赶上只能怪自己生不逢时。测试:RedHat 6.0/Intel PII目录转载 2014-04-14 16:01:15 · 947 阅读 · 0 评论 -
struct timeval结构体 以及 gettimeofday()函数
一、struct timeval结构体struct timeval结构体在time.h中的定义为:struct timeval{__time_t tv_sec; /* Seconds.*/__suseconds_t tv_usec; /* Microseconds.*/};其中,tv_sec为Epoch到创建struct ti转载 2014-04-14 16:11:00 · 560 阅读 · 0 评论 -
STL中的常用的vector,map,set,Sort用法
C++的标准模板库(Standard Template Library,简称STL)是一个容器和算法的类库。容器往往包含同一类型的数据。STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。.一. vector1.声明: 一个vector类似于一个动态的一维数组。 vector a; //声明一个元素为int类型的转载 2014-04-14 16:34:33 · 450 阅读 · 0 评论 -
printf 原理
一. 何谓可变参数 int printf( const char* format, ...); 这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format和可变参数(用”…”表示). 而我们又可以用各种方式来调用printf,如:printf( "%d ",value); printf( "%s ",str);转载 2014-05-08 17:12:12 · 543 阅读 · 0 评论 -
linux C 语言的 system(执行shell 命令)
表头文件代码:#include定义函数代码:int system(const char * string);函数说明system() 会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGI转载 2014-04-09 22:44:07 · 586 阅读 · 0 评论 -
linux setlocale用法
linux setlocale用法头文件与声明如下:1 #include 2 char* setlocale(int category, const char* locale);说明:category:为locale分类,表达一种locale的领域方面,通常有下面这些预定义常量:LC_ALL、LC_COLLATE、LC_CTYPE、LC_MES转载 2014-02-02 22:41:05 · 1370 阅读 · 0 评论 -
signal 函数
ignal编辑sig是传递给它的唯一参数。执行了signal()调用后,进程只要接收到类型为sig的信号,不管其正在执行程序的哪一部分,就立即执行func()函数。当func()函数执行结束后,控制权返回进程被中断的那一点继续执行。目录1函数名: signal2注意点1函转载 2014-02-02 22:07:59 · 560 阅读 · 0 评论 -
linux c简单了解signal
一、什么是信号 1、 信号就是软件中断,很多的程序都需要处理信号。信号提供了一种处理异步事件的机制。 例如:当用户在终端下运行一个程序时,用户在键盘键入一个中断键(CTRL+C),则会通过信号机制终止一个正在运行的程序。 2、每一个信号都有自己独特的名字。这些名字都是以SIG开头的。例如中断信号SIGINT.在linux下输入shell命令kil转载 2014-02-02 22:06:10 · 630 阅读 · 0 评论 -
linux c ---signal 和sigaction
要对一个信号进行处理,就需要给出此信号发生时系统所调用的处理函数。可以对一个特定的信号(除去SIGKILL和SIGSTOP信号)注册相应的处理函数。注册某个信号的处理函数后,当进程接收到此信号时,无论进程处于何种状态,就会停下当前的任务去执行此信号的处理函数。 1、注册信号函数。[cpp] view plaincopyprint?转载 2014-02-02 22:10:00 · 589 阅读 · 0 评论 -
Win32 API之Setlocale函数配置地域化信息函数
setlocale:函数原形为:char *setlocale( int category, const char *locale );头文件:所支持的操作系统为:ANSI, Win 95, Win NT对于简体中文可以使用如下设置:setlocale( LC_ALL, "chs" );为什么一定要调用setlocale呢?因为在C/C++语言标准中定义了其运行时的字符转载 2014-02-02 22:40:01 · 635 阅读 · 0 评论 -
vector C语言详细用法的分析
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 为了可以使用vector,必须在你的头文件中包含下面的代码: #include vector属转载 2014-02-02 23:19:24 · 664 阅读 · 0 评论 -
细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
一.函数介绍:1、memcpy函数原型:extern void *memcpy(void *dest, const void *src, size_t count);用法:#include功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。注意:和strcpy相比,memcpy不是遇到转载 2014-02-03 17:54:54 · 567 阅读 · 0 评论 -
命令行参数解析: getopt()与getopt_long()
Linux下很多程序甚至那些具有图形用户界面(graphical user interface,GUI)的程序,都能接受和处理命令行选项。对于某些程序,这是与其他程序或用户进行交互的主要手段。具有可靠的复杂命令行参数处理 机制,会使得您的应用程序更好、更有用。不过很多开发人员都将其宝贵的时间花在了编写自己的命令行解析器,却不使用 getopt(),而后者是一个专门设计来减轻命令行处理负担的库函数。转载 2014-02-02 17:22:21 · 585 阅读 · 0 评论 -
C标准库的setlocale()
C 和 C++ 的标准库分别有自己的 locale 操作方法,C 标准库的 locale 设定函数是 setlocale(),而 C++ 标准库有 locale 类和流对象的 imbue() 方法。这篇是我自己的 setlocale() 使用总结。Linux的glibc中的setlocale()具体参考:man 3 setlocale头文件与声明如下:转载 2014-02-02 22:38:40 · 811 阅读 · 0 评论 -
getopt和getopt_long函数
平时在写程序时常常需要对命令行参数进行处理,当命令行参数个数较多时,如果按照顺序一个一个定义参数含义很容易造成混乱,而且如果程序只按顺序处理参数的话,一些“可选参数”的功能将很难实现。在Linux中,我们可以使用getopt、getopt_long、getopt_long_only来对这个问题进行处理。[cpp] view plaincopy转载 2014-02-02 16:35:11 · 513 阅读 · 0 评论 -
linux---signal
Linux系统学习笔记:信号 Unix/Linux Yeolar 2012-05-11 12:54主题: Linux系统学习笔记« Linux系统学习笔记:进程» Linux系统学习笔记:线程本篇总结信号。信号是软件中断,它提供了一种处理异步事件的方法。Contents信号信号名字和映射中断的系统调用转载 2014-02-02 20:39:56 · 484 阅读 · 0 评论 -
[Project Euler] 来做欧拉项目练习题吧: 题目008
问题描述: Find the greatest product of five consecutive digits in the 1000-digit number.731671765313306249192251196744265747423553491949349698352031277450632623957831801698480186947885184385861560转载 2014-05-11 18:55:03 · 668 阅读 · 0 评论