爱悠闲 > 分类 >

linux-C 第5页

linux下调试内存泄露的工具Valgrind
Valgrind Valgrind 已经在 Linux 应用程序开发社区中广泛用来调试应用程序。它尤其擅长发现内存管理的问题。它可以检查程序运行时的内存泄漏问题。这个工具目前正由 Julian Seward 进行开发,并由 Paul Mackerras 移植到了 Power 架构上。 要安装 Valgrind,请从 Valgrind 的 Web 站点上下载源代码(参阅 参考资料 )。切换到 Val
线程安全与可重入
定义   线程安全:被多个并发的线程反复调用时,他会产生正确的结果。   可重入:当被多个线程调用的时候,不会引用任何共享数据。   Remark:任何线程不安全问题的根源都是“共享数据”。所以,不使用任何共享数据的函数(即:可重入函数)肯定是线程安全的。但这并不等于说,线程安全函数就是可重入函数。为什么呢?因为:即使有线程有共享数据,线程被并发调用的时候产生的结果可以是正确的。那么这种正确性是如
linux串口通信中设置软件控制输入流的开始和结束
首先,如果我们不是开发串口driver的,而只是用串口来传入自己定义格式的数据,然后根据得到的数据做相关的解释,我们需要设置这些, options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /*Input*/ options.c_oflag &= ~OPOST; /*Output*/然后就是重点,如何设置software flow con
gcc跨版本编译出现“浮点数例外”错误解决办法
项目中遇到的问题,我的开发环境的gcc是4.1.2,而目标机器的gcc版本是3.2.2,而且libc的版本不同,我的是2.5,目标是2.3.2。 问题是,在我的机器上编译出来的动态库和可执行程序,到目标机器,会报错,”浮点数例外“,在网上搜索了一会,发现了问题的原因。 原因是glibc不兼容导致的,因为在高版本的的gcc中,在链接是会用新的hash技术来提高动态链接的速度, 代码是, -Wl,--
makefile进入子文件夹执行make
写了一个文件夹比较多的程序,在写主Makefile的时候,需要进入子文件夹执行make,在这里记录下,自己运行成功的Makefile。 SUBDIRS=directory1 directory2 directory3 RECURSIVE_MAKE= @for subdir in $(SUBDIRS); \ do \ echo "making in $subdir";
动态库加载出错,cannot restore segment prot after reloc: Permission denied以及为何编译动态库需要-fPIC
项目中碰到的问题,编译好的so文件,放到其他机器上去加载,报了错误,cannot restore segment prot after reloc: Permission denied。 网上查了一下,原因是selinux的问题,selinux的设置太过严格导致的。解决的办法是在root用户下,修改/etc/selinux/config 文件, 把SELINUX=enforcing 改成 SELI
IO模式设置网络编程常见问题总结—IO模式设置,阻塞与非阻塞的比较
转载自:houlaizhe211 非阻塞IO 和阻塞IO:        在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明:        基本概念:               阻塞IO::                      socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会                   
pthread_create会导致内存泄露
转载自:powersaven 这几天一直在调试一个系统,系统的功能就是定时发送数据、接收数据然后解析收到的数据,转换成一定的格式存入数据库中。我为了并发操作,所以每接收到一个数据包,就调用pthread_create函数创建一个默认属性的线程进行处理。   系统一开始运行很正常,但是当接收到第299个数据包时,就发生异常,查看程序日志,得知原来自接收到299个数据包后,就不再解析接收到的数据。我本
如何解决TIME_WAIT过多的解决办法(附Socket中的TIME_WAIT状态详解)
转载自:xzhijun linux和windows下TIME_WAIT过多的解决办法 如果使用了nginx代理,那么系统TIME_WAIT的数量会变得比较多,这是由于nginx代理使用了短链接的方式和后端交互的原因,使得nginx和后端的ESTABLISHED变得很少而TIME_WAIT很多。这不但发生在安装nginx的代理服务器上,而且也会使后端的app服务器上有大量的TIME_WAIT。查阅T
linux 客户端 Socket 非阻塞connect getsockopt不可用
转载自:点击打开链接 开发测试环境:虚拟机CentOS,windows网络调试助手         非阻塞模式有3种用途         1.三次握手同时做其他的处理。connect要花一个往返时间完成,从几毫秒的局域网到几百毫秒或几秒的广域网。这段时间可能有一些其他的处理要执行,比如数据准备,预处理等。         2.用这种技术建立多个连接。这在web浏览器中很普遍.         3.