![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux应用程序-点点滴滴
文章平均质量分 94
bingqingsuimeng
这个作者很懒,什么都没留下…
展开
-
Linuxshell字符串截取与拼接
一 Linux 的字符串截取很有用。有八种方法。假设有变量 var=http://www.hao.com/123.htm1 # 号截取,删除左边字符,保留右边字符。echo ${var#*//}其中 var 是变量名,# 号是运算符,*//表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.hao.com/123.htm转载 2016-05-18 10:27:49 · 18366 阅读 · 1 评论 -
Linux 标准 输入 输出 重定向. printf 不输出到屏幕的解决办法
方法1: #include #include #include #include #include int main() { fflush(stdout); setvbuf(stdout,NULL,_IONBF,0); printf("test stdout\n"); int save_fd = du转载 2016-05-20 09:09:37 · 7722 阅读 · 0 评论 -
nfs挂载出现no such device是内核没有配置NFS
nfs挂载出现no such device是内核没有配置NFS转载 2016-06-15 17:40:16 · 12041 阅读 · 3 评论 -
海思sample释义
1.运行sample中的例子,全部错误码都是0xA0088010,即vpss系统未初始化,答:我也遇到了这个问题,经检查是发现板卡上SDK的版本与编译程序用的SDK版本不一致导致的,编译环境换成与板卡一致的版本后,问题解决。希望对你有帮助。2.hi3531运行sample_vdec,VGA没有输出图像答:执行./sample_vdec 3.然后VGA会有显示的,./sample_vde转载 2016-08-04 18:28:47 · 3309 阅读 · 0 评论 -
从TCP三次握手说起——浅析TCP协议中的疑难杂症
声明:本文来自腾讯增值产品部官方公众号小时光茶社,为CSDN原创投稿,未经许可,禁止任何形式的转载。 作者:黄日成,手Q游戏中心后台开发,腾讯高级工程师。从事C++服务后台开发4年多,主要负责手Q游戏中心后台基础系统、复杂业务系统开发,主导过手Q游戏公会、企鹅电竞App-对战系统等项目的后台系统设计,有丰富的后台架构经验。责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qia转载 2016-11-11 16:14:40 · 1131 阅读 · 0 评论 -
雷神之锤 - 神一般存在的Sqrt函数
转载:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢?虽然有可能你平时没有想过这个问题,不过正所谓是“临阵磨枪,不转载 2016-12-20 13:24:13 · 657 阅读 · 0 评论 -
printf背后的故事
说起编程语言,C语言大家再熟悉不过。说起最简单的代码,Helloworld更是众所周知。一条简单的printf语句便可以完成这个简单的功能,可是printf背后到底做了什么事情呢?可能很多人不曾在意,也或许你比我还要好奇!那我们就聊聊printf背后的故事。一、printf的代码在哪里?显然,Helloworld的源代码需要经过编译器编译,操作系统的加载才能正确执行。而编译器包含预编译、编转载 2017-02-17 09:31:12 · 608 阅读 · 0 评论 -
typedef struct 和struct
typedef struct tagMyStruct { int iNum; long lLength; } MyStruct; 在C中,这个申明后申请结构变量的方法有两种: (1)struct tagMyStruct 变量名 (2)MyStruct 变量名 在c++中可以有 (1)struct tag转载 2017-02-20 16:33:46 · 274 阅读 · 0 评论 -
浮点型数据在内存中存储的表示
学计算机N年了,一年懒得去了解小数的存放,趁今天想知道double数据存放格式,了解了一下,真是懒不得,无论什么样的基础知道,早晚一天还是要学到心中的。一、浮点型数据在内存中存储的表示实数在内存中以规范化的浮点数存放,包括数符、阶码、尾数。数的精度取决于尾数的尾数。比如32位机上float型为23位(因为规范化数的数码最高位恒为1,不必存储,实际精度为24位,下面会有详解),dou转载 2017-02-22 09:17:43 · 713 阅读 · 0 评论 -
子进程继承父进程中互斥锁的讨论
1. 引言 首先明确一个问题:如果一个多线程程序的某个线程调用了fork函数,那么新创建的子进程里是不会自动创建和父进程相同数量的线程的,它只是调用fork的那个线程的完整复制。并且,子进程会自动继承父进程中(包括父进程在调用fork之前创建的线程)互斥锁的状态。也就是说,父进程中已经被加锁的互斥锁在子进程中也是被锁住的。这就引起了一个问题:子进程可能不清楚从父进程继承过来的互斥锁的具体状态(转载 2017-02-23 15:16:29 · 662 阅读 · 0 评论 -
一个 pthread_cancel 引起的线程死锁
说明:本文由【2,3】整理而得。这篇文章主要从一个 Linux 下一个pthread_cancel 函数引起的多线程死锁小例子出发来说明Linux 系统对 POSIX线程取消点的实现方式,以及如何避免因此产生的线程死锁。目 录:1. 一个 pthread_cancel 引起的线程死锁小例子2. 取消点(Cancellation Point)3. 取消类型(Can转载 2017-02-24 17:38:00 · 432 阅读 · 0 评论 -
常见的makefile写法
1、目标名称,摆脱手动设置目标名称[cpp] view plain copy TARGET = $(notdir $(CURDIR)) all:$(TARGET) CMD.... $(CURDIR) 表示Makfile当前目录全路径$(notdir $(path)) 表示把path目录去掉路径名,只留当前目录名这样就可以得到Makefi转载 2017-03-06 14:47:47 · 2153 阅读 · 0 评论 -
[uboot] uboot启动kernel篇(一)——Legacy-uImage & FIT-uImage
一、uImage编译kernel之后,会生成Image或者压缩过的zImage。但是这两种镜像的格式并没有办法提供给uboot的足够的信息来进行load、jump或者验证操作等等。因此,uboot提供了mkimage工具,来将kernel制作为uboot可以识别的格式,将生成的文件称之为uImage。 uboot支持两种类型的uImage。Legacy-uImage 在ke转载 2017-03-20 15:55:34 · 1796 阅读 · 0 评论 -
u-boot FIT image介绍
u-boot FIT image介绍作者:wowo 发布于:2016-9-2 21:49 分类:u-boot分析1. 前言Linux kernel在ARM架构中引入device tree(全称是flattened device tree,后续将会以FDT代称)的时候[1],其实怀揣了一个Unify Kernel的梦想----同一个Image,可以支持多个不同的平台。随着新的ARM64架转载 2017-03-20 15:56:12 · 449 阅读 · 0 评论 -
堆和栈区别 生长方向
C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。C++内存区域分为5个区域。分别是堆,栈,自由存储区,全局/静态存储区和常量存储区。栈:由编译器在需要的时候分配,在不需要的时候自动清除的变量存储区。里面通常是局部变量,函数参数等。堆:由new分配的内转载 2017-03-07 13:56:38 · 750 阅读 · 0 评论 -
glibc、uclibc的区别
1.Glibcglibc = GNU C Library是GNU项(GNU Project)目,所实现的 C语言标准库(C standard library)。目前,常见的桌面和服务器中的GNU/Linux类的系统中,都是用的这套C语言标准库。其实现了常见的C库的函数,支持很多种系统平台,功能很全,但是也相对比较臃肿和庞大。2.uClibc一个小型的C语言标准库,主要用转载 2017-03-13 09:28:31 · 606 阅读 · 0 评论 -
pcm混音
近段时间公司做一个电信项目,铃音助手,用户可以从网上下载背景铃音,和自己的录音合成一个性化的铃音后设为自己手机的彩铃 ,开始是其他同事搞的,在其用了多天时间无法解决的情况下,我介入处理,轻松搞定 。我发现我们的背景音是a-law或µ-law编码的,需要对其解码成PCM编码,和录音混音后再转回原来的编码。转码混音处理使用NDK开发JNI C代码放native层执行实现,以提高处理的效率,经过对An转载 2017-08-22 15:16:41 · 1117 阅读 · 0 评论 -
makefile中执行for循环
shell 循环以下代码实现与上面同样的功能, 该版本的循环, 在多平台(AIX, HP-UX, SUSE)测试没有问题:[plain] view plain copy print?files=main.exe a.exe b.exe all: for name in `echo $(files) | sed s/.exe//g`; \转载 2016-05-18 10:25:39 · 19934 阅读 · 0 评论 -
libcurl出现CURLcode 23 CURLE_WRITE_ERROR错误 以及每次抓取网页长度不一致问题
使用libCURL时调用curl_easy_perform返回的CURLcode为23错误。查看得知是CURLE_WRITE_ERROR,写文件错误。估计是使用curl_easy_setopt时设置CURLOPT_WRITEFUNCTION或者CURLWRITEDATA时有问题,结果找了半天也没有发现。最后发现是够早的WRITEFUNC有问题:错误:size_t functio转载 2016-05-11 13:31:50 · 9009 阅读 · 0 评论 -
libcurl在嵌入式设备C 的使用
最近用海思hi3518E开发了个wifi摄录一体机,现在要用http实现信息推送功能,比如在设备发生报警录像时就会推送一条信息“有异常入侵!”和一张抓拍图像到服务器,然后当客户的手机上网时,就会受到推送的信息。在网上下载了curl的开源库,可以用C实现http功能。一、curl库的编译curl的下载地址是http://curl.haxx.se/download.html,详细的编译步骤参考转载 2016-05-10 17:11:19 · 2865 阅读 · 0 评论 -
两个在存储方面的用到的函数
statfs statfs函数使用说明 功能描述: 查询文件系统相关的信息。 用法: #include /* 或者 */ int statfs(const char *path, struct statfs *buf); int fstatfs(int fd, struct statfs *buf); 参数: path: 位于需要查转载 2012-11-01 20:52:16 · 604 阅读 · 0 评论 -
Linux环境变量的设置和查看方法
1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ echo $HELLO Hello! 3. 使用env命令显示所有的环境变量 $ env HOSTNAME=redbooks.safe.转载 2012-11-01 11:08:32 · 527 阅读 · 0 评论 -
内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)
内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)新版本的录制程序终于快完工了,在添加了一个新特性“报警录制”后,就开始测试了。一开始就不顺利:程序正常运行一段时间后就会崩溃,由于程序添加了守护进程,在崩溃后会自动重启。因此测试得到的结果就是:程序运行一段时间后就自动重启,并不断持续;有时几个小时重启一次,有时甚至每分转载 2012-12-19 13:48:37 · 17697 阅读 · 0 评论 -
使用mallopt调整malloc/new行为
同事在项目中使用new/delete的时候发现一个奇怪的现象:int32_t i;std::queue qTest;for (i = 0; i char *p = new char[100]; qTest.push(p); char *p1 = qTest.front(); delete[] p1; qTest.pop()转载 2013-01-09 13:40:43 · 1418 阅读 · 0 评论 -
so文件动态替换方法及Linux动态库的用法
在替换so文件时,如果在不停程序的情况下,直接用 cp new.so old.so 的方式替换程序使用的动态库文件会导致正在运行中的程序崩溃。解决的办法是采用“rm+cp” 或“mv+cp” 来替代直接“cp” 的操作方法。linux系统的动态库有两种使用方法:运行时动态链接库,动态加载库并在程序控制之下使用。1、为什么在不停程序的情况下,直接用 cp 命令替换程序使用的 so 文转载 2013-04-11 17:53:48 · 3082 阅读 · 0 评论 -
Linux 下定时器的实现方式分析
时间轮 (Timing-Wheel) 算法类似于一以恒定速度旋转的左轮手枪,枪的撞针则撞击枪膛,如果枪膛中有子弹,则会被击发;与之相对应的是:对于 PerTickBookkeeping,其最本质的工作在于以 Tick 为单位增加时钟,如果发现有任何定时器到期,则调用相应的 ExpiryProcessing 。设定一个循环为 N 个 Tick 单元,当前时间是在 S 个循环之后指向元素 i (i>=转载 2013-05-09 16:54:42 · 980 阅读 · 0 评论 -
使用strace, ltrace寻找故障原因的线索
在GNU/Linux环境下,当程序出现“疑难杂症”的时候,如何快速定位问题呢?本文介绍strace/ltrace的一些使用方法,内容主要来自个人的读书笔记(可见参考文献)。strace/ltrace 是一类不错的工具,在工作中经常会用到,其主要可以用于:(1) 了解一个程序的工作原理(可以了解Linux下很多常用的命令实现的原理);(2) 帮助定位程序中的问题(在开发工作时帮助转载 2013-12-02 12:44:18 · 1776 阅读 · 0 评论 -
expect脚本解释
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。 脚本代码如下: ############################################## #!/usr/bin/expect set tim转载 2013-12-19 17:07:46 · 853 阅读 · 0 评论 -
fork出的子进程和父进程
一、fork后的父子进程由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进程的理由是:因为一个进程的子进程可以多于一个,没有一个函数使一个进程可以获得其所有子进程的进程id。对子进程来说,之所以fork返回0给它,是因为它随时可以调用ge转载 2014-03-27 14:47:38 · 998 阅读 · 0 评论 -
嵌入式程序的一种提取ip地址和验证
#include #include #include #include #include char*test; /* int regcomp(regex_t *preg, const char *regex, int cflags); int regexec(const re转载 2014-10-23 10:16:49 · 870 阅读 · 0 评论 -
用ioctl设置mac地址 得到当前的ip地址,子网掩码等信息
#include /* for socket(2) and related bits and pieces */#include /* for socket(2) */#include /* for struct ifreq */#include /* for ARPHRD_ETHER */#include /* for IOCTL's */#includ转载 2014-10-13 14:57:53 · 2053 阅读 · 0 评论 -
linux 设置网络API --- 开/关网卡、设置/获取Mac地址
最近在做项目过程中,由于在多线程中使用system函数,有时候出现莫名程序异常终止,最后决定替换所有的system函数,但是对于设置mac地址这个函数试了很多次都没有成功;今天在此总结下原因:1. 编写的关闭/打开网卡函数没有延时;(一般情况设置开关网卡可能需要初始化,所以如果开关连续可能没有初始化成功,你可以试试在嵌入式Linux命令行下快速的开关网卡,也是没有反应的)2. 类型转换问题转载 2014-10-11 14:06:22 · 1284 阅读 · 0 评论 -
gdb调试info threads只能显示一个进程问题
在一个Linux环境中,调试多线程程序不正常,info threads看不到多线程的信息。 我先用命令maintenance print target-stack看了一下target的装载情况,发现target"multi-thread"没有被装载,用GDB对GDB进行调试,发现在 函数check_for_thread_db在调用libthread_db中的函数td_ta_new的时候,返回了转载 2016-01-18 14:56:38 · 7068 阅读 · 0 评论 -
ip冲突和双网卡模式
1.解决服务器ip地址冲突导致的 svn不能更新问题netsh interface ipv4 show neighborsnetsh interface ipv4 set neighbors 8 "192.168.5.1" "50-e5-49-e5-86-52"2.双网卡模式绿茶小编带来了双网卡同时上内外网设置教程,如果你想要了解win7/xp双网卡内外网同时用设置步骤的话转载 2016-03-02 15:39:54 · 5649 阅读 · 0 评论 -
strip,eu-strip 及其符号表,gdb调试strip过的程序
我们公司产品里面的可执行程序和动态共享库(DSO)里面的符号表都被移除了,所以每次遇到core dump的时候,都需要将符号表导入到/usr/lib/debug目录下。一直没弄明白为啥是这个目录,能不能是其他目录,今天没啥事儿,研究了下这个主题。 我们要给我们生成的可执行文件和DSO瘦身,因为这样可以节省更多的磁盘空间,所以我们移除了debug信息,移除了符号表信息,同时我们还希望万转载 2016-01-15 10:46:19 · 6060 阅读 · 1 评论 -
很经典的GDB调试命令,包括查看变量,查看内存
在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。print命令的格式是:printprint /是表达式,是你所调试的程序的语言的表达式(GDB可以调试多种编程语言),是输出的格式,比如,如果要把表达式按16进制的格式输出,那么就是/x。一、表达式print和许多GDB的命令一样,可以接受一个表达转载 2016-01-15 15:08:22 · 13146 阅读 · 0 评论 -
gdb显示变量 和 数组
程序变量查看文件中某变量的值:file::variablefunction::variable可以通过这种形式指定你所想查看的变量,是哪个文件中的或是哪个函数中的。例如,查看文件f2.c中的全局变量x的值:gdb) p 'f2.c'::x查看数组的值有时候,你需要查看一段连续的内存空间的值。比如数组的一段,或是动态分配的数据的大小。你可以使用GDB的“@”操转载 2016-01-15 15:40:11 · 3676 阅读 · 0 评论 -
MMAP和madvise的配套使用
本人做流媒体开发的,工作中需要将mpg文件转化成一定格式发送到网络,由于文件太大,程序用mmap()来实现文件的读取,但在实测过程中发现一个大问题,如下: 服务器配置: CPU:两颗至强3.0 内存:2G 磁盘:3个SATA硬盘组成磁盘阵列 测试时同时运行30个播放程序读取30个不同的mpg文件,程序起初运行画面播放非常流畅,几分钟过后,内存剩下15MB左右时,mmap转载 2012-10-31 17:36:01 · 6119 阅读 · 1 评论