Linux编程
文章平均质量分 53
hello-world2016
热爱Linux和开源, 喜欢编程,看书, 听音乐 和篮球。
展开
-
PostgreSQL中删除重复行(保留一行)
delete from table_name as ta where ta.唯一键原创 2013-03-03 17:46:33 · 10225 阅读 · 11 评论 -
求两个数相乘结果的位数
printf("位数为:%d\n", (int)ceil( ((log(a)+log(b)) / (log(10)) )));原创 2012-05-18 16:35:38 · 1860 阅读 · 0 评论 -
大数相乘——自己仿写版
#include #include #include char * BigNumberMulti(const char * a, const char *b);int main(void){ const char * a = "999999999999999999999999999999999999999999999999999999999999999999999999999999原创 2012-05-18 22:22:11 · 1017 阅读 · 0 评论 -
大数相乘
#include #include using namespace std; void multiply(const char *a,const char *b); int main() { //cout<<"hicjiajia"<<endl; string num1,num2; // 初始状态用string来存储大数转载 2012-05-18 17:33:38 · 559 阅读 · 0 评论 -
Debian下用C连接MySQL
1.首先安装mysql-server , mysql-client:sudo apt-get install libmysqlclient16 mysql-server mysql-client libmysqlclient-dev2.示例代码:/**********************************************原创 2012-05-17 19:52:21 · 1318 阅读 · 0 评论 -
查看CPU的大小端模式
大小端:CPU对内存单元数据的排列顺序的方式. 采用小端(Little-endian)模式的CPU对操作数的存放方式是从低字节到高字节(从右到左即从低到高);这是X86平台采用的模式; 采用大端(Big-endian)模式对操作数的存放方式是从高字节到低字节;在网络上传送的数据采用的方式;例如:16bits宽的数:0x1234在Little-endian模式的CPU中内原创 2012-05-17 20:12:25 · 2641 阅读 · 0 评论 -
C语言中的可变参数
1.包含头文件 :,它声明了一种类型,并定义了(C89)几个宏:va_start, va_arg和va_end。C99中还增加了一个类似函数的宏va_copy。2.要想获取可变参数。必须声明va_list类型的变量来接收可变参数。 va_list ap; 然后将这个“指针”指针到开头。即第一个可变参数:va_start(ap, n);这里的n为可变参数列表中的第一个参数的名原创 2012-05-14 15:00:24 · 906 阅读 · 0 评论 -
<setjmp.h>非局部跳转(来自C语言程序设计--现代方法第二版)
int setjmp(jmp_buf env);void longjmp(jmp_buf env, int val); 可以使得一个函数直接跳转到另一个函数,而不需要返回。 setjmp宏“标记”程序中的一个位置;随后可以使用longjmp跳转到该位置。 注意:setjmp会在第一次调用时返回0;随后,longjmp将控制权重新转给最初的setjmp宏调用,而setjmp原创 2012-05-14 10:52:04 · 2188 阅读 · 0 评论 -
C标准中qsort()函数
原型:void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 其中,base必须指向数组中的第一个元素。(如果只是对数组中的一段区域进行排序,那么要使base指向这段区域的第一个元素。)在一般情况下,base就是数组的名字。nmemb是要排序元素的原创 2012-05-13 10:51:43 · 666 阅读 · 0 评论 -
静态与动态内存分配的主要区别
1.静态对象是有名字的变量,可以直接对其进行操作。动态对象是没有名字的变量,需要通过指针间接地对它进行操作。2.静态对象的分配与释放由编译器自动处理(内存空间存放在栈区),动态对象(内存空间存放在堆区)的分配与释放必须由程序员显式地管理,它通过malloc()和free()两个函数来完成。原创 2012-05-11 22:40:25 · 667 阅读 · 0 评论 -
Linux信号中断处理
1.kill产生一个信号: extern int kill (__pid_t __pid, int __sig); pid>0:将信号发送给进程的pid为pid的进程; pid=0:将信号发送给和当前进程在同一个进程组的所有进程; pid=-1:将信号发送给系统内的所有进程; pid 成功返回0;失败返回值-1.2.raise自举一个信号: e原创 2012-05-12 08:18:36 · 789 阅读 · 0 评论 -
整数大数加法
#include #include #include char * BigNumberAdd(const char *a, const char *b);int main(void){ const char * a = "9879797978979798797"; const char * b = "97979797987979797979797979797987"; char原创 2012-05-19 10:36:00 · 722 阅读 · 0 评论 -
整数大数减法
#include #include #include char * BigNumberSubtration(const char *a, const char *b);int main(void){ int isSwap = 0; char *a = "998879879465498765794657984987465413215679879465498461324原创 2012-05-19 16:51:44 · 709 阅读 · 0 评论 -
Linux下的Socket基础编程(2)
#include #include #include # include #include #include #include #include #include #define BIND_PORT 9999#define BUFFSZ 4096int main(int argc, char * argv[]){ //extern int socket (int __原创 2013-02-10 10:38:26 · 928 阅读 · 0 评论 -
Linux下消息队列小例子
发送方:#include #include #include #include #include #include #include struct msg{ long msg_types; char msg_buf[511];};int main(void){ int qid; int pid; int len; struct msg pmsg; pm原创 2013-02-10 09:02:26 · 887 阅读 · 0 评论 -
ubuntu下开始自动挂载硬盘分区
# /etc/fstab: static file system information.## Use 'blkid -o value -s UUID' to print the universally unique identifier# for a device; this may be used with UUID= as a more robust way to name# dev原创 2013-02-05 11:05:32 · 966 阅读 · 0 评论 -
ubuntu10.04下驱动编程hello world
1.驱动源码:#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello, world\n"); return 0;}static void hello_exit(void){ pri原创 2013-02-01 10:20:09 · 920 阅读 · 0 评论 -
ubuntu下交叉编译windows程序
安装mingw。编译程序:i586-mingw32msvc-gcc它的行为和GCC非常类似。原创 2013-01-24 14:54:36 · 2690 阅读 · 0 评论 -
MyEclipse下安装ADT
1.将下载好的ADTx.x.zip文件。2.解压这个文件,然后进入这个目录,并创建一个名为“eclipse”的目录。3.将里面的features目录和plugins目录剪切到eclipse目录里。即如下:4.进入myeclipse的安装目录下的dropins目录下,建立一下名为ADT.link的文件。里面的内容为:#linux下:path=/path/to/ADT原创 2012-12-08 21:57:52 · 1003 阅读 · 0 评论 -
Linux下的Socket基础编程(来自Unix网络编程)
1.服务器端:/* * server.c * * Created on: Nov 20, 2012 * Author: gentoo */#include #include #include #include #include #include #include #include #include #include #define SERVER_原创 2012-11-22 23:01:09 · 735 阅读 · 0 评论 -
Linux下C内联汇编小例子
/* ============================================================================ Name : GCC.c Author : Gentoo Version : Copyright : Your copyright notice Description : Hello Wor原创 2012-11-19 23:17:16 · 911 阅读 · 0 评论 -
我的Linux PS1 变量
\[\033[01;32m\][\u@\h\[\033[01;34m\] \t \w \[\033[01;32m\]]$ \[\033[00m\]截图:原创 2012-11-26 22:54:51 · 716 阅读 · 0 评论 -
Linux下curl的使用
result = curl --verbose --data "id=${cetID}${i}&name=${MyName}" --header "Referer: http://cet.99sushe.com/" "http://cet.99sushe.com/s"其中id=xxx&name=xxx是参数与参数值http://xxxx/是你所要请求的网站的域名,也可以使用IP原创 2012-08-26 10:06:38 · 692 阅读 · 0 评论 -
Linux和Windows下刷新缓冲区
1. 使用 fflush(stdin); 或 rewind(stdin); 均可起到清空键盘缓冲区的作用,这两个函数均包含在stdio.h这个头文件中。但它们只适用于Windows系统。2.最具移植性的做法,使用以下函数: void setbuf(FILE *restrict stream, char *restrict buf); setbuf(stdin, NULL);原创 2012-05-12 08:17:30 · 957 阅读 · 0 评论 -
Linux下的进程间通信PIPE
1.创建无名管道: extern int pipe (int __piepedes[2]) __THROW _wur; pipedes[0]:用来完成读操作 pipedes[1]:用来完成写操作 失败则返回回-1。2.读无名管道:ssize_t 即为unsigned int 类型。 extern ssize_t read (int __fd, void *原创 2012-05-12 08:16:15 · 841 阅读 · 0 评论 -
内存分配函数
1.为了动态地分配内存空间,可调用三种内存分配函数中的一种.这些函数都是声明在头文件中: 1) malloc函数--分配内存块,但是不对内存块进行初始化 2) calloc函数--分配内存块,并且对内存块进行初始化 3) realloc函数--调整先前分配的内存大小. 这三种函数中,malloc函数是最常用的一种.因为malloc函数不需要对分配的内原创 2012-05-12 09:30:05 · 797 阅读 · 0 评论 -
malloc()和free()注意点
1.调用free()释放内存后,不能再去访问被释放的内存空间。该段内存被释放后,很有可能该指针仍然指向该内存单元,但这块内存已经不属于原来的应用程序,此时的指针为悬挂指针(可以赋为NULL),有些时候,为安全起见,将再次置该指针为空。 free(pt); pt = NULL;2.不能两次释放相同的指针(NULL的除外,无论对NULL指针free()多少次都不会出问题原创 2012-05-11 22:41:11 · 836 阅读 · 0 评论 -
Linux下线程操作
1.创建线程:pthread_t 实质上是unsigned long int 类型。 extern int pthread_create(pthread_t *__restrict __newthread, __const pthread_attr_t *__restrict __attr, __void *(*__start_rout原创 2012-05-12 08:16:46 · 603 阅读 · 0 评论 -
从文件写入和读取结构体示例代码
/****************************************************** author :杨志永* date :2012-04-15* E-mail:ljy520zhiyong@163.com* QQ :929168233** filename:structs_io.c** Sytem:Debian 6.0.4* GCC:4.6原创 2012-05-11 22:48:55 · 1307 阅读 · 0 评论 -
ANSI C 中的 printf
1.long : %ld2.long unsigned int : %lu3.double : %lf4.float : %f5.char : %c6. int : %d7.指针: %p8.八进制: %o9.十进制,八进制,十原创 2012-05-11 22:47:23 · 674 阅读 · 0 评论 -
ANSI C文件操作函数
1.打开文件: extern FILE *fopen(__const char *__restrict __filename, __const *__restrict __modes); 如果执行成功,将返回打开文件的文件指针;如果执行失败,将返回NULL。2.关闭文件: extern int fclose(FILE *__stream); 如果原创 2012-05-11 22:46:39 · 979 阅读 · 0 评论 -
Linux下进程与环境变量
1.在shell下可以通过命令env或set查看当前系统的环境变量信息。2.获取环境变量的值: extern char * getenv(__const char *__name) 如果执行成功,此函数返回指定环境变量的值,否则返回NULL。3.添加环境变量: extern int putenv (char *__string); 如原创 2012-05-11 22:45:10 · 1896 阅读 · 0 评论 -
main函数参数
1.main函数原型: int main(int argc, char * argv[], char * envp[]);2. argc:是命令行参数的数目(这个值包含命令本身,如果后面没有参数,则argc=1) argv:是一个指针数组,其各成员依次指向各参数,即argv[0]指向命令本身。指针数据的最后一个成员为NULL,以区别结束。 envp:存放是原创 2012-05-11 22:42:36 · 740 阅读 · 0 评论 -
realloc()函数
1.它用来在堆中更改已经配置好的内存空间。其函数声明如下: extern void * realloc(void *__ptr, size_t __size); 第一个参数为试图更改大小的原堆空间的位置,size为新的内存大小。2.减小内存: realloc()仅仅更改索引信息,但并不代表被减少的部分还可以访问,减少部分的内存将交给操作系统管理。原创 2012-05-11 22:41:57 · 762 阅读 · 0 评论 -
常见内存错误
1.返回局部变量地址错误。 因为局部变量的生存周期仅在当前函数中,因此,如果在某函数返回局部变量地址,将引起内存错误。 int * test(void) { int i = 0; return &i; }2.临时空间过大。 操作系统在加载某个应用程序时,都将为其分配一定大小的栈空间,如果申请过大的局部变量,将原创 2012-05-11 22:39:32 · 473 阅读 · 0 评论 -
一个复杂一点的单向链表
/*********************************************************************************** * * 作者:杨志永 ** 日期:2012-05-13原创 2012-05-12 17:52:41 · 812 阅读 · 0 评论 -
Linux下创建和使用静态和动态库
一.创建静态库与使用: (创建静态库): 1.编写源代码。这个可以想像成是一种服务或一种函数,它可以为别的程序提供服务。 2.生成目标文件:gcc -c xxxx.c -o xxxx.o(注意,这里是用-c选项来编译) 3.使用ar命令创建静态库: ar rc libxxx.a xxxx.o 说明:libxxx.a是你想要创建静态库的名字原创 2012-05-11 22:36:21 · 640 阅读 · 0 评论 -
Linux下进程管理与控制
1.创建进程: extern __pid_t fork(void); 成功则在父进程中返回子进程的PID;在子进程中则返回0,以区别父子进程。 失败则在父进程中返回-1; 说明:子进程从创建后和父进程「同时」执行;竞争系统资源,子进程的执行位置为fork的返回位置。 extern __pid_t vfork(void); 成功则在父进程中返回子进程的PI原创 2012-05-12 08:15:40 · 772 阅读 · 0 评论 -
Linux下获取进程信息
1.获取当前进程号:(pid_t 实质是int类型) extern __pid_t getpid(void); 成功则返回当前进程号;失败则返回-1;2.获取父进程号: extern __pid_t getppid(void); 成功则返回当前进程的父进程号;失败则返回-1;3.获取进程组号: extern __pid_t getpgid(__原创 2012-05-12 08:15:05 · 1301 阅读 · 0 评论 -
Linux C获取下载和上传的网速V3
/** 作者:杨志永* 日期:2012-04-17 10:10 * Email:ljy520zhiyong@163.com* QQ:929168233* * 文件名: watch_network_speed.c* 编译环境:Debian 6.0.4 Testing, GCC 4.6.3 X86_64* * 功能:获取Linux系统下的下载和上传的网速**/#include原创 2012-05-12 08:11:32 · 1599 阅读 · 0 评论