
linux C语言技巧
忧郁的废物_Addy
不疯魔 不成活
展开
-
C语言编程技巧——signal(信号) 函数、信号机制及软中断详解
Signal()函数使用简介 signal()是一种系统调用,用于通知运行时系统,当某种特定的“软件中断”发生时调用特定的程序。它的真正的名字应该是“Call_that_routine_when_this_interrupt_Comes_in(当该中断发生时调用那个程序)", 调用signal()函数,并通过参数传递告诉它终端类型以及用于处理中断的程序。原创 2013-01-06 14:28:12 · 23719 阅读 · 0 评论 -
Linux下C语言多线程编程
一、多线程的创建1、Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连 接时需要使用库libpthread.a。因此,后面的编译必须在选项中加入 -lpthread 选项,否则提示找不到pthread_create()这些函数。Linux下pthread的实现是通过系统调用clone()来实现的。C转载 2014-07-18 09:50:35 · 2906 阅读 · 0 评论 -
迭代与递归:To Iterate,Human; to Recurse, Divine.
引言从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?「从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?『从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……』」什么是递归递归(Recursion),在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。为什么要用转载 2014-06-04 19:41:59 · 3540 阅读 · 0 评论 -
Linux程序设计 清空标准输入缓冲区
今天在Linux程序设计的时候需要清空标准输入缓冲区,于是使用了如下Windows程序设计中的方法:1.fflush(stdin);这个fflush()函数根本不是标准C中的函数,只是标准C的扩展,所以在Linux中使用根本不行;2.中网上搜索了下,发现有网友建议使用rewind(stdin);这个函数其实是将指针指向流的开始处。但是它是文件操作中的一个函数,操作的是FILE型流,转载 2014-04-25 14:51:01 · 5148 阅读 · 0 评论 -
将标准输出重定向到一个文件的同时并在屏幕上显示
一、标准输出+标准错误输出标准输出和标准错误,同时保存到文件logfile方法一: 2>&1 | tee [root@home root]# id das 2>&1 |tee logfileid: das: No such user[root@home root]# cat logfileid: das: No such user 注释:管道的作用为把转载 2014-04-22 17:37:36 · 38777 阅读 · 0 评论 -
C语言字节对齐及设置编译对齐方式方法
一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果转载 2013-10-15 13:52:22 · 39304 阅读 · 0 评论 -
C语言中字符串如何转换为二进制、八进制、十进制、十六进制
在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现相关函数: atof, atoi, atol, strtod, strtoul表头文件: #include 定义函数: long int strtol(const char *nptr, char **endptr, int base);函数的解释说明原创 2013-06-24 15:34:39 · 57119 阅读 · 5 评论 -
likely() 和 unlikely() 功能分析
在程序中,偶尔可以见到 likely() 和 unlikely() 判断语句,那么为什么要用它们?它们之间有什么区别? 首先要明确: if(likely(value)) 等价于 if(value) if(unlikely(value)) 也等价于 if(value)也就是说 likely() 和 unlikely() 从阅读和理解原创 2013-05-02 18:59:40 · 8343 阅读 · 0 评论 -
gcc 编译器 最常用的命令行参数
1. gcc -E source_file.c-E,只执行到预编译。直接输出预编译结果。2. gcc -S source_file.c -S,只执行到源代码到汇编代码的转换,输出汇编代码。3. gcc -c source_file.c-c,只执行到编译,输出目标文件。4. gcc (-E/S/c/) source_file.c -o output_filenam原创 2013-05-03 13:34:07 · 1911 阅读 · 1 评论 -
C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
C语言可变参简介 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: printf("%d",i);原创 2013-01-13 11:31:35 · 69906 阅读 · 5 评论 -
linux 中C语言便于调试的宏定义编写及 __FILE__,__FUNCTION__, __LINE__参数使用
在linux编程中,当文件数量变的众多之后,使用gdb调试就是一场灾难。因此在程序中加入合理的打印信息,定位错误出现的文件名,函数名,行号等信息,能更高效的定位到问题的所在。 下面定义了宏,分别是WARNING,INFO,ERROR,SHOW_TIME,DEBUG等。利用了 __FILE__,_FUNCTION__, __LINE__等变量。。。 _FILE__,__FU原创 2013-01-10 20:43:31 · 13582 阅读 · 2 评论 -
Linux系统调用解析
什么是系统调用? Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。用户可以通过系统调用命令在自己的应用程序中调用它们。从某种角度来看,系统调用和普通的函数调用非常相似。区别仅仅在于,系统调用由操作系统核心提供,运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态。 随Linux核心还提供了一些C语言函数库,这些库对原创 2013-01-23 19:57:37 · 4271 阅读 · 0 评论 -
ELF格式文件符号表全解析及readelf命令使用方法
1. 读取ELF文件头:$ readelf -h signELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data:转载 2013-04-09 18:40:44 · 89144 阅读 · 7 评论