
linux
文章平均质量分 77
逍遥子_
重点关注大并发处理、分布式计算、微服务、物联网、大数据等领域
展开
-
video4linux(v4l)使用摄像头的实例基础教程与体会
<!--@page {margin:2cm}p {margin-bottom:0.21cm}h1 {margin-bottom:0.21cm}h1.western {font-family:"DejaVu Serif",serif}h1.cjk {font-family:"DejaVu Sans"}h1.ctl {font-family:"DejaV转载 2012-09-11 09:49:08 · 1407 阅读 · 0 评论 -
linux so 库的生成与调用
本文主要通过导出一个log文件操作的类,来说明linux下so库的生成与调用。先说明一下本文中的几个文件和其作用:1)ilogfile.h 主要用于定义Clogfile类的借口和声明一个C风格的create导出函数。2)logfile.h 主要定义了Clogfile类的头文件。3)logfile.cpp 主要提供了Clogfile类的定义。4)create.cpp 主要定义了一个c原创 2012-09-09 16:24:41 · 1324 阅读 · 0 评论 -
linux下获取多个网卡MAC地址
#include #include #include #include #include #include #include #include #include #include #include #include #include u原创 2012-10-23 17:33:53 · 2653 阅读 · 0 评论 -
ubuntu下安装与使用Log4cpp
ubuntu下安装与使用Log4cpp1、下载版本:log4cpp-1.1rc3.tar.gz, 该版本中没有1.0版本的那些bug,不需修改,下载地址:http://sourceforge.net/projects/log4cpp/2、解压下载的压缩文件:log4cpp-1.1rc3.tar.gz,可以使用命令行,或者右键压缩包,在弹出菜单项中选择“解压至此处”3、解压原创 2012-11-01 10:14:45 · 5513 阅读 · 0 评论 -
Linux下 JNI的使用
学习Android其中涉及对JNI的使用,对于这种跨语言的调用真没有见过,Java也都是最近才学的更别说对JNI的了解了,JNI的使用对于Android来说又是十分的重要和关键。那么到底Java到底是如何调用C/C++的,通过网络达人的总结中学习,自己也顺便总结一下这个学习的过程。什么是JNI JNI是Java native interface的简写,可以译作Java原转载 2012-11-13 11:02:29 · 1092 阅读 · 0 评论 -
/etc/profile和/etc/environment的比较
先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文。将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统重新登录,登录提示显示中文。用户环境建立的过程中总是先执行/etc/profile然后在读取/etc/environment。为什么会有如上所叙的不同呢?转载 2012-11-14 09:27:56 · 897 阅读 · 0 评论 -
ubuntu 下eclipse 启动时出现An error has occurred. See the log file的问题
eclipse原来可以使用的好好的,装了个CDT之后就不能启动类,经过查找,可能原因之一是机子装了多于一个jdk,并且当前使用的这个jdk与eclipse使用的冲突导致,问题分析及其解决办法:1、使用如下命令查看机子装了多少个jdk:update-alternatives --config java例如,输入上述命令之后,可以看到我的机子当前装了下面三个:有 2 个选项可用原创 2012-11-13 17:33:52 · 8024 阅读 · 1 评论 -
Android JNI开发入门之二
在上一篇文章《Android JNI开发入门之一》中,我介绍了Android应用程序(APK)怎样通过JNI调用Native C实现的共享库。本文将进一步介绍Android应用程序通过JNI调用NativeC++实现的共享库,并实现一个和上文《Android JNI开发入门之一》相同功能的Helloworld应用程序。两套不同的API 前文已经提到,Android系统的Java虚转载 2012-11-13 11:17:04 · 944 阅读 · 0 评论 -
Emacs常用命令
C- 当敲入字符时按住ctrl键M- 当敲入字符时按住alt或meta键C-p 向上移动一行 C-n 向下移动一行C-f 向前移动一个字符 C-b 向后移动一个字符M-f 向前移动一个字(word) M-b 向后移动一个字C-a 移动到行首 C-e 移动到行尾M-a 移动到当前句子所在的第一个字符M-e 移动到当前句子所在的最后一个字符C-v 向转载 2013-01-30 11:38:09 · 1022 阅读 · 0 评论 -
用GDB调试Segmentation Fault错误
调试Linux程序的时候,出现Segmentation Fault是最郁闷的事情了,程序代码量很大的时候,可能花很多时间都找不到出错原因。这里介绍一种对你调试Segmentation Fault很有帮助的方法,可能能迅速帮助你找到出错的代码行。这种方法需要用到Linux提供的core dump机制:当程序中出现内存操作错误时,会发生崩溃并产生核心文件(core文件)。使用G转载 2013-02-04 13:54:13 · 2218 阅读 · 0 评论 -
ubuntu窗口最小化消失,任务栏上无法找到的解决方法
右键单击任务栏,在弹出的菜单中选择“添加到面板”,在弹出的对话框中选择“窗口列表”即可。原创 2013-02-16 10:34:09 · 8955 阅读 · 1 评论 -
浅谈时间函数gettimeofday的成本
我们在程序中会频繁地取当前时间,例如处理一个http请求时,两次调用gettimeofday取差值计算出处理该请求消耗了多少秒。这样的调用无处不在,所以我们有必要详细了解下,gettimeofday这个函数做了些什么?内核1ms一次的时钟中断处理真的可以支持tv_usec字段达到微秒精度吗?它的调用成本在i386/x86_64体系架构上代价一样吗?如果在系统繁忙时,频繁的调用它有问题吗?get转载 2013-03-07 10:05:26 · 1673 阅读 · 0 评论 -
Linux多线程同步
1 互斥锁 互斥锁用来保证一段时间内只有一个线程在执行一段代码。必要性显而易见:假设各个线程向同一个文件顺序写入数据,最后得到的结果一定是灾难性的。 先看下面一段代码。这是一个读/写程序,它们公用一个缓冲区,并且假定一个缓冲区只能保存一条信息。即缓冲区只有两个状态:有信息或没有信息。void reader_function ( void );void writer_func转载 2013-04-03 16:26:54 · 1337 阅读 · 0 评论 -
linux多线程加解锁
1、动态方式使用互斥量,该类型的互斥量在定义时不进行初始化,需要在使用之前初始化,使用结束销毁 1.1、定义一个锁变量: pthread_mutex_t g_mutex_Msg; 1.2、初始化锁变量: pthread_mutex_init (&g_mutex_Msg,NULL); 1.3、销毁锁变量:原创 2013-03-06 12:08:52 · 1286 阅读 · 0 评论 -
linux环境下调试嵌入式设备时出现Aborted、segmentation fault、卡死的问题以及关于指针使用的一点想法
linux环境下调试一些嵌入式设备时出现Aborted、segmentation fault、卡死的问题,这些问题可能的原因为:1、Aborted的问题,例如:# ./logUtils0322[UnitTest.cpp]:will init log[cfgfile.cpp]: logfile open suc[LogUtils.cpp]:NOTICE OPen configu原创 2013-03-25 11:57:26 · 5250 阅读 · 0 评论 -
关于C语言可变参数函数的一些研究和总结
可变参数函数是指函数参数的个数、类型等是不固定的,需要在用户调用过程中,根据实际传入的参数来确定其类型、个数等信息。例如:可变参数函数printf可谓是在C开发过程中使用最多的标准输出库函数之一,因此有必要对其原理进行了解以便更好使用之,同时在一些开发过程中可能还需要自己来实现一个可变参数的函数。本文主要是关于C中可变参数函数的一些总结,包括可变参数的实现原理及其实现方式。 可变参数函数的原创 2013-03-19 17:29:49 · 1379 阅读 · 0 评论 -
利用GDB进行远程调试
在进行嵌入式系统开发中,受到嵌入式系统资源的限制,调试环境和通用桌面系统的调试环境有差别,引入了远程调试技术。这时,调试器运行于通过桌面系统,被调试的程序则运行于基于特定硬件平台的嵌入式系统(目标系统)。因此,要求调试器和被调试程序之间进行通信,调试器还需要能够处理某些特定硬件平台的信息。 插桩(stub)方案是在目标系统和调试器内分别加入某些功能模块,二者互通信息来进行调试。而通过引入GD转载 2013-04-09 10:54:35 · 2554 阅读 · 0 评论 -
linux下判断网络是否连接
本文改写自网上的一个程序,原始程序中为阻塞式调用,而且有进程创建的过程,非常不利于集成到自己程序中,因此对原始程序进行改造,使其可以完成发送一个imcp包的方式来判断网络连通,只需要调用改进后的 bool NetIsOK()函数即可,该函数返回true即表示网络状态良好,否则表示网络状态不连同,本程序中只发送了一个icmp包,在实际应用中可以根据需要改进为发送多个imcp包。修改之后的原创 2013-04-24 11:43:28 · 6716 阅读 · 1 评论 -
linux下C\C++ 开发小笔记
1、linux下C的标准库中没有提供itoa、itof等,但可以使用sprintf或snprintf来代替,例如:int iNum = 123456;char tmpBuf[256];itoa(iNum, tmpBuf, 10);则可以按照如下方式使用:sprintf(tmpBuf,"%d",iNum);snprintf(tmpBuf,256,"%d",iNum原创 2013-03-25 16:17:18 · 1342 阅读 · 0 评论 -
shell脚本的一些用法笔记
1、在一般命令窗口输入的命令直接拷贝到脚本文件中就可以执行。2、判断文件或文件夹是否存在、具有执行权力等。[改写自网络]#!/bin/shNovaPath=”/var/log/httpd/”NovaFile=”/var /log/httpd/access.log”#(1) -x 参数判断$NovaPath是否存在并且是否具有可执行权限if [ ! -x "$NovaPa原创 2013-05-02 09:50:40 · 1379 阅读 · 0 评论 -
select,poll,epoll区别
原文地址:http://blog.youkuaiyun.com/Sunboy_2050/article/details/5971779select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时候就可以标识32*max值范围的fd。对于单进程多线程,每个线程处理多个fd的情况,sel转载 2013-07-24 10:20:14 · 1232 阅读 · 0 评论 -
linux下make 文件写法之简单函数调用
有如下func1.h、func1.cpp以及func1.h、func1.cpp,它们被main.cpp里的main函数调用,func1:头文件和cpp文件如本表格所示//func1.h#ifndef _MYFUNC_1_H#define _MYFUNC_1_Hvoid func1();#endif/原创 2012-10-23 17:47:10 · 1137 阅读 · 0 评论 -
linux g++ undefined reference to `dlopen'类问题
main.cpp:(.text+0x19): undefined reference to `dlopen'main.cpp:(.text+0x22): undefined reference to `dlerror'main.cpp:(.text+0x62): undefined reference to `dlsym'需要在编译时加上-ldl。将原来的编译命令:g++ cfgf原创 2013-03-01 08:55:04 · 10517 阅读 · 0 评论 -
-bash:fork:Resource temporarily unavailable
Java代码 出现这个问题的原因是linux用户的连接数设置的太小,只要修改max user processes就可以 www.2cto.com 设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个: ulimit -u 10000 ulimit -a core file size (bloc转载 2013-09-06 11:58:36 · 1455 阅读 · 0 评论 -
在linux 下编译c程序时“ error:dereferencing pointer to incomplete type”的问题
在linux 下编译c程序时经常会遇到“ error:dereferencing pointer to incomplete type”的问题,该问题的原因是:结构体定义不规范造成的,回想一下,教科书中正规的结构体定义方式是:struct 结构体名{ 数据类型 成员1; ... 数据类型 成员n;};在linux中经常使用gcc进行编译c语言程序时更严格原创 2013-09-02 17:19:05 · 6278 阅读 · 0 评论 -
error: expected expression before ‘;’ token的问题
在借用mosquitto源码,写一个订阅客户端时,使用了pthread_create和pthread_join时出现:error: expected expression before ‘;’ token的问题:相关代码为:_ret = pthread_create(&g_clients_db.handle_thread_id, NULL, handle_thread,NULL原创 2013-09-30 13:25:36 · 29543 阅读 · 0 评论 -
构建C1000K的服务器(1) – 基础
原文地址:http://www.ideawu.net/blog/archives/740.html 著名的 C10K 问题提出的时候, 正是 2001 年, 到如今 12 年后的 2013 年, C10K 已经不是问题了, 任何一个普通的程序员, 都能利用手边的语言和库, 轻松地写出 C10K 的服务器. 这既得益于软件的进步, 也得益于硬件性能的提高.现在, 该是考虑 C1000K,转载 2013-10-08 11:23:07 · 1809 阅读 · 0 评论 -
linux下的常用时间函数总结
1、Unix系统一直使用两种不同的时间值:“日历时间”和“进程时间”1.1、日历时间,日历时间是从国际标准时间公元1970年1月1日00:00:00到现在所经历的秒数;此时间精度为秒。 系统用time_t保存这种时间值,如果时间要求不是非常精确则可以使用此时间,例如记录文件修改的时间。 这里的time_t是个长整型数值,可以用函数:time_t time(time_t* c原创 2013-03-07 01:55:09 · 1450 阅读 · 0 评论 -
linux下使用c进行线程操作
linux环境下,使用C语言创建一个线程的代码如下所示: pthread_attr_t attr_r; pthread_attr_init(&attr_r); pthread_t threadid_r; int tmp = 0; tmp = pthread_create(&threadid_r,&attr_r,_test_Read,NULL); if(tm原创 2013-03-13 17:33:59 · 1173 阅读 · 0 评论 -
linux安装软件时提示找不到镜像的问题:Couldn't resolve host 'mirrorlist.centos.org'
问题:[root@cddserver2 ~]# yum -y install gccLoaded plugins: fastestmirror, prestoCould not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was14: PYCURL原创 2013-10-12 16:09:03 · 8507 阅读 · 0 评论 -
字符串分割函数strtok_r的用法
一、函数strtok_r的使用 函数strtok_r可以将一个字符串按照指定的分割符进行分割,例如将字符串:"hello, jason, please come here",按照","分割为:"hello""jason""please come here"也可以按照分隔符" "分割为:"hello,""jason,""please come here" 二、原创 2013-10-30 15:47:57 · 34169 阅读 · 1 评论 -
linux 内存泄露检测工具——valgrind
valgrind是linux下一个可用调试、查看内存泄露的工具,其官方网站:http://www.valgrind.org/使用时可用命令:valgrind -v --leak-check=full ./可执行程序名例如:valgrind -v --leak-check=full ./mosquitto这里mosquitto是可执行程序的名称ce原创 2013-12-06 16:49:28 · 1844 阅读 · 0 评论 -
tmpfs 文件系统介绍
如果我必须一下子说清楚 tmpfs,我会说 tmpfs 就象虚拟磁盘(ramdisk),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。总而言之,这让 tmpfs 成为我有机会遇到的最好的基于 RAM转载 2013-12-11 14:51:34 · 2475 阅读 · 0 评论 -
用GDB调试Segmentation Fault错误
调试Linux程序的时候,出现Segmentation Fault是最郁闷的事情了,程序代码量很大的时候,可能花很多时间都找不到出错原因。 这里介绍一种对你调试Segmentation Fault很帮助的方法,可能能迅速帮助你找到出错的代码行。 这种方法需要用到Linux提供的core dump机制:当程序中出现内存操作错误时,会发生崩溃并产生核心文件(core文件转载 2013-12-12 16:24:46 · 1351 阅读 · 0 评论 -
生成core文件的步骤
1、需要在/etc/security/limits.conf中添加: * soft core 1000000 * hard core 10000002、在.bash_profile里有设置 ulimit -c unlimited //表示可以生成99999大小的core文件。0表示不生成 ulimit -c 999993、echo "/tm转载 2013-12-13 10:07:17 · 1834 阅读 · 0 评论 -
Linux strace命令
简介strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。输出参数含义root@ubuntu:/usr# strac转载 2014-01-02 15:22:15 · 968 阅读 · 0 评论 -
如何查询Linux内核版本
如何得知自己正在使用的linux是什么版本呢,下面的几种方法将给你带来答案! 1. 查看内核版本命令: 1) [root@q1test01 ~]# cat /proc/version Linux version 2.6.9-22.ELsmp (bhcompile@crowe.devel.redhat.com) (gcc version 3.4.4 20050721转载 2014-01-02 17:10:16 · 1168 阅读 · 0 评论 -
一个自动在栈和堆上分配变长数组的实现方式
在开发过程中,经常会遇到想要申请的内存长度不固定的情况,在一般效率不高时,直接使用malloc或者free就可以,但是在一些效率要求较高的场合,频繁的使用malloc和free会严重影响到系统的性能,在大多数情况下,我们遇到的情况都是:申请的长度一般都在某个值之下,特殊情况下,会出现长度大于此值;这时候如果使用一个定长的数组,则可以显著提升系统效率,但是又照顾不了个别情况下数组无法装下的问题,并且原创 2013-12-20 16:04:36 · 1786 阅读 · 0 评论 -
CentOS环境下,gdb调试中出现:Missing separate debuginfos, use: debuginfo-install.....的问题
1、 修改文件/etc/yum.repos.d/CentOS-Debuginfo.repo中的enabled参数,将其值修改为1,如:vi /etc/yum.repos.d/CentOS-Debuginfo.repo2、 使用命令: yum install nss-softokn-debuginfo --nogpgcheck3、 使用命令:debuginfo-inst原创 2013-12-24 13:06:33 · 3464 阅读 · 0 评论 -
strace 简单用法
strace是一个功能强大的调试,分析诊断工具,主要用来监视系统调用。下面的内容主要以centOS为例。安装使用strace前需要先在安装它,可使用命令:yum install strace否则会出现:-bash: strace: command not found使用strace命令的详细参数如下:usage: strace [-dffhiqrtttTvVxx原创 2013-12-26 17:45:00 · 9527 阅读 · 0 评论