随笔分类 - Linux 应用编程
记录应用方面的一些知识点~
摘要:先前所描述的st_mode 则定义了下列数种情况: S_IFMT 0170000 文件类型的位遮罩 S_IFSOCK 0140000 scoket S_IFLNK 0120000 符号连接 S_IFREG 0100000 一般文件 S_I...
阅读全文
摘要:用自己的话,解释清楚这些~Makefile是程序员编写出来指导编译器编译程序源码为目标文件(可执行文件,或链接库)这里只写一个简单的Makefile作为例子其需求如下:frank@ubuntu:~/muban/M$tree.├──compare.cpp├──compare.h├──edit├──ma...
阅读全文
摘要:交叉编译的时候不能使用本地(i686机器,即PC机器,研发机器)机器上的库,但是在做编译链接的时候默认的是使用本地库,即/usr/lib,/lib两个目录。因此,在交叉编译的时候,要采取一些方法使得在编译链接的时候找到需要的库。 首先,要知道:编译的时候只需要头文档,真正实际的库文档在链接的时候用到。 (这是我的理解,假如有不对的地方,敬请网上各位大侠指教) 然后,讲讲如何在交叉编译链接的时候找到需要的库。(1)、交叉编译时候直接使用-L和-I参数指定搜索非标准的库文档和头文档的路径。例如:arm-linux-gcc test.c -L/usr/local/arm/2.95.3/arm-lin
阅读全文
摘要:哦,clock_gettime( ) 提供了纳秒的精确度,给程序计时可是不错哦;函数的原型如下:int clock_gettime(clockid_t clk_id, struct timespect *tp);clockid_t clk_id用于指定计时时钟的类型,对于我们Programmr以下三种比较常用:CLOCK_REALTIME, a system-wide realtime clock.CLOCK_PROCESS_CPUTIME_ID, high-resolution timer provided by the CPU for each process.CLOCK_THREAD_.
阅读全文
摘要:作者:bpsub1. 相关函数 #include <pthread.h> pthread_cond_t cond = PTHREAD_COND_INITIALIZER; int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr); int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(pthread_cond_t *cond); int pthread_cond_wait(pthread_cond_t
阅读全文
摘要:与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。条件的检测是在互斥锁的保护下进行的。如果一个条件为假,一个线程自动阻塞,并释放等待状态改变的互斥锁。如果另一个线程改变了条件,它发信号给关联的条件变量,唤醒一个或多个等待它的线程,重新获得互斥锁,重新评价条件。如果两进程共享可
阅读全文
摘要:线程终止的三种方式:1. 线程只是从启动例程中返回,返回值是线程的退出码;2. 线程调用了pthread_exit函数;3. 线程可以北同一进程中的其他线程取消。**************************************************************转载自:http://hi.baidu.com/ganss/blog/item/ff7799f97a87de58242df24c.html1 线程取消的定义一般情况下,线程在其主体函数退出的时候会自动终止,但同时也可以因为接收到另一个线程发来的终止(取消)请求而强制终止。2 线程取消的语义1. 线程取消的方法是向
阅读全文
摘要:我们编程时常常想统计一下自己写过多少行代码了,这时候该怎么办呢?虽然Vim等编辑器中有代码行数显示,但是不能一个个打开然后加起来吧?这个时候需要用到wc这个工具,呵呵,别看名字不怎么样,功能可是很强大的哦。用法:当前目录下:wc -l *.c *.h当前目录及子目录:find . -name *.c |xargs wc -lfind . -name *.cpp | xargs wc -lfind . -name *.h |xargs wc -l转自:http://www.cnblogs.com/hoys/archive/2011/06/03/2071923.html
阅读全文
摘要:Shellcoding for Linux and Windows Tutorialhttp://www.vividmachines.com/shellcode/shellcode.htmlhttp://www.safemode.org/files/zillion/shellcode/doc/Writing_shellcode.html
阅读全文
摘要:linux下的三种可执行文件格式的比较本 文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executable and Linking Format 可执行和链接格式)。首先是对可执行文件格式的一个综述,并通过描述 ELF 文件加载过程以揭示可执行文件内容与加载运行操作之间的关系。随后依此讨论了此三种文件格式,并着重讨论 ELF 文件的动态连接机制,其间也穿插了对各种文件格式优缺点的评
阅读全文
摘要:首先说明一下头文件、库文件、库函数这三个概念的区别。头文件:即后缀为.h的文件,在其中对变量和函数原型进行了声明。库文件:提供有库函数的文件。一种是静态连接的后缀为.a的文件,在程序编译时连接;一种是共享库,文件后缀为.so,在程序运行的时候才进行连接。库函数:在库文件里提供的函数。下面,我们用一个实例介绍一下怎么样创建库文件以及怎么样应用库文件。文件1:mymath.h#ifndefMYMATH_H#defineMYMATH_Hintxiangjia(inta,intb);intxiangjia(inta,intb);#endif文件2:xiangjia.cintxiangjia(inta,
阅读全文
摘要:一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。2)可重入函数:不为连续的调用持有静态数据。 不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。如果必须访问全局变量,记住利用互斥信号量来保护全局
阅读全文
摘要:linux多线程编程的七条准则准则1:不依赖于信号收发的设计。原文。给其它进程以及自己发送异步信号并改变处理流程的设计不要做。不要把信号和线程一起使用,这将使得程序动作的预测和调试变得困难。准则2:要知道信号处理函数中可以做哪些处理。原文。在sigaction()函数登记的信号处理函数中可以做的处理是被严格限定的。仅允许:局部变量的相关处理volatile sig_atomic_t类型的全局变量操作调用异步信号安全的相关函数volatile提示编译器对此变量不要进行优化处理,因为优化后代码可能导致程序语句的顺序混乱。sig_atomic_t类型变量表示只需要一条机器指令就可以执行完成,这样保证
阅读全文
摘要:from:http://hi.baidu.com/walfer/blog/item/fa649f457276f53e86947302.html我们运行如下命令,可看到Linux支持的信号列表:$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD18) SIGCONT 19) SIG
阅读全文
摘要:参考自:http://topic.csdn.net/u/20090812/15/43cae1c5-938d-4dac-a5f2-192f262d30f5.html定位free/malloc的位置和参数,可以在对应的.cpp/.h文件中添加:C代码 #include<stdio.h> #include<stdlib.h> void* debug_malloc(size_tsize,constchar*file,intline,constchar*func) { void*p; p=malloc(size); printf("%s:%d:%s:malloc(%ld
阅读全文
摘要:这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。原理:通常,syslog守护进程读取三种格式的记录消息。此守护进程在启动时读一个配置文件。一般来说,其文件名为/etc/syslog.conf(注释:if you want to redirect log to other place,you need to change this),该文件决定了不同种类的消息应送向何处。例如,紧急消息可被送向系统管理员(若已登录),并在控制台上显示,而警告消息则可记录到一个文件中。该机制提供了syslog函
阅读全文
摘要:学习学习Coreutils经常会有人问Linux下的cp mv mount 等shell命令源码在哪儿,我们可以在这里找到http://www.gnu.org/software/coreutils/,下载地址http://ftp.gnu.org/gnu/coreutils/;相关文档 http://www.ha97.com/book/lfs-book-6.6/chapter06/coreutils.html
阅读全文
摘要:功能描述: mount挂上文件系统,umount执行相反的操作。 用法:显示代码打印1 #include <sys/mount.h>23 int mount(const char *source, const char *target,4 const char *filesystemtype, unsigned long mountflags, const void *data);56 int umount(const char *target);78 int umount2(const char *target, int flags);参数:显示代码打印01 source:将要挂
阅读全文
摘要:1、recv的返回值各代表什么意思?有没有区别?( <0:出错,=0:连接关闭,>0接收到数据大小,特别:返回值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的,继续接收。只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要循环读取)。2、write的返回值各代表什么意思?有没有区别?(是 <0:出错,=0:连接关闭,>0发送数据大小,特别:返回值 <0时并且(errno == EINTR || errno ==
阅读全文
摘要:关于消息队列的接口函数主要参考unix环境高级编程。 刚开始看的时候,由两个疑问,我自己的答案是这样的 1.消息队列在系统中的最大个数,关于这个问题,书上有明确的答案;书上有个表格列明了linux ,free bsd,mac OS X ,solaris中的典型值。当然也可以通过一些手段来修改。sysctl就可以修改。 2.在多个线程(或进程)同时对一个消息队列进行读写,是否需要同步? ...
阅读全文

浙公网安备 33010602011771号