linux学习
David.li
这个作者很懒,什么都没留下…
展开
-
linux 监听新文件
linux 监听新增文件事件机制原创 2022-11-23 15:55:26 · 378 阅读 · 0 评论 -
删除旧文件
#include <stdio.h>#include <fcntl.h> #include <time.h> #include <string.h>#include <dirent.h>#include <sys/stat.h>#include <unistd.h> #define FILE_MAX_LEN 256 void rmv_old_files(const char *path, const c.原创 2022-05-26 15:49:27 · 114 阅读 · 0 评论 -
linux GCC -O参数设置整理
-O参数只有5个级别,并不是设置的越高越好(以前的GCC支持很高的级别,但是现在确实只有5级)◆-O0:关闭所有优化选项◆-O1:基本优化,编译器会生成更快的代码◆-O2:-O1的升级版,推荐使用◆-O3:这是目前最高的优化级别,它会使用更多的编译时间,虽然它生成的代码只会比-O2块一点点(GCC3.x中是这样的,但是在GCC4.x中有时候可能还没有-O2快),但是它会增大二进制文件的体积并让他们更消耗内存,因此在GCC4.x中-O3是不推荐的。◆-Os:这个级别是用来优化代码尺寸的,他原创 2020-08-25 17:36:21 · 919 阅读 · 0 评论 -
gcc优化导致的错误
在MyOS中,有这样一段系统调用代码:void sys_win_draw(regs_t reg){ HWND hWnd = (HWND)reg.ebx; unsigned long* buffer = (unsigned long*)reg.ecx; DrawWindow(hWnd, buffer);}平时都很正常,今天想测试一下效率,就写了个循环调用,结果调用次数老是不对,令我十分奇怪。如果把代码改成这样,void sys_win_draw(regs_t reg){...转载 2020-07-30 16:57:48 · 406 阅读 · 0 评论 -
GCC优化引发的一场血案
正所谓人在江湖飘,那有不挨刀。从事软件行业,不写几个惊天地泣鬼神的BUG都不好意思说自己干过软件。 本人从事C/C++开发工作,日常就是看看文档发发呆写写BUG。在一个风和日丽的上午,日常上班中,突然客户丢过来一个BUG,是System halt,灾难性BUG啊!通过Sorce Dump,最终出现问题的代码锁定在以下位置: 因为项目保密需求,代码经过变形和加工,仅作示例,大家领会精神。#defien STACK_SIZE_MAX 50 //此处省略一万字…… ...转载 2020-07-30 16:57:01 · 1318 阅读 · 1 评论 -
修改编译优化选项后导致bug的原因分析
有没有碰到过这样的情况,用-O0优化选项编译程序是正常的,换成-O2优化选项编译程序就有bug呢?或者反过来,-O2编译正常,-O0编译有bug。mingdu.zhengatgmaildotcomhttps://blog.csdn.net/zoomdy/article/details/79397591提高优化级别后可能引起的问题例如从O0变更为O2。编译乱序引起的问题,程序当中没有放置正确的内存屏障,编译优化引起的乱序执行导致程序出现bug。 时序引起的问题,优化后的代码执行速度要...转载 2020-07-30 16:51:13 · 1198 阅读 · 0 评论 -
Gcc 优化选项注意事项
Gcc -O0 不优化,-O1 -O2 -O3对代码进行了优化,减小目标文件大小,减小代码段及栈空间的大小,同时也会带来一些意想不到的问题,所以良好的编程风格和规范至关重要,避免类型直接来回转换,进可能用小内存表示,而且不同平台要求4或8字节对齐。如:1、函数临时变量为short a,而函数内部对a地址赋值一个32位的整数,则会覆盖栈地址,导致程序崩溃。2、部分指令寄存器要求地址16字节对齐,代码中内存地址只有4字节对齐才不会出错,优化后程序都会调整为16字节对齐,否则程序会崩溃。3、部分变转载 2020-07-30 16:50:25 · 555 阅读 · 0 评论 -
虚拟机进入登录界面卡住不动的情况解决方法
在工作中碰到有一次虚拟机突然不能用了,每次进度虚拟机界面都会卡住不动,我以为是虚拟机桌面出问题了故进入命令行模式重新安装desktop但是还是不行,这时我想到了每次虚拟机起来都会检测网络状态会不会被卡住了。于是搜索到了这条指令(windows dos下执行)netsh winsock resetwinsock是Windows网络编程接口,winsock工作在应用层,它提供与底层传输协议无关的高层数据传输编程接口 netsh winsock reset 是把它恢复到默认状态。netsh win原创 2020-07-14 16:47:14 · 12975 阅读 · 0 评论 -
Linux很多比较好用的shell脚本程序用于监控服务器状态查询一些信息
查看linux系统信息#!/bin/bash##---------------------------------------#Author: MartinHe#Date: 2019-03-16#FileName: systeminfo.sh#URL: ...转载 2019-06-05 08:51:55 · 597 阅读 · 0 评论 -
自己用vfork实现system函数避免调用shell失败
自己实现一套system调用的功能,以前有碰到过用系统函数system出现不起作用的情况大多都失败了,后来在不得已的第三方工具的调用上自己实现了system函数,但是建议能用接口的最好用接口函数,vfork会占用系统资源,在内存不是很充足的情况下偶尔也会失败。int System_cmd(const char *cmd){ pid_t pid; if(-1==(pid...原创 2019-05-24 10:29:26 · 682 阅读 · 0 评论 -
用select替代usleep导致的线程阻塞问题
写一个延迟函数,usleep是延迟函数有时导致线程阻塞会因为有定时器终止的信号(SIGALRM)产生时会一些未定义的情况,建议少用,我们目前都换成了select替代,具体代码如下void Msleep(unsigned int MilliSecond){ struct timeval time; time.tv_sec = MilliSecond / 1000;//seconds...原创 2019-05-24 10:22:06 · 1642 阅读 · 0 评论 -
快速排序的递归算法实现
用了这么多,感觉还是递归最简单最好用,下面介绍下递归实现快速排序,它在很多公司笔试题中也有考到#include <stdio.h>int FindSite(int *arr, int low, int high){ int flag=arr[low]; //将需要查找位置的第一个数字赋值给flag; int *tmp = arr; while (low < ...原创 2019-06-05 10:30:12 · 1462 阅读 · 0 评论 -
二分查找递归的算法
特别注意的是二分查找也叫做折半查找,所以要求初始化的数组序列必须是有序的,不然会查找失败!#include <stdio.h>int TwoPointsSearch(int Array[],int low,int high,int key/*要找的值*/){ if (low<=high) { int mid = (low+high)>>1; ...原创 2019-06-05 10:15:54 · 4856 阅读 · 0 评论 -
passwd出现不完全匹配登陆成功的情况,问题解决如下
passwd设置用户登陆密码的命令参数如下:Usage: passwd [options] [LOGIN]Options: -a, --all report password status on all accounts -d, --delete delete the password for the...原创 2019-05-30 16:22:21 · 1249 阅读 · 0 评论 -
linux 下判断wifi连接状态的代码
查看wifi连接状态,有时候wifi断开连接了但是我们不知道,以至于不能重新连接上wifi,这时候我们需要一个判断来知道wifi时候断开了,下面这段代码就是来检测wifi连接状态的,代码非常简单/*********************************************************************** 函数名称: * 功能描述:* 输入参数:...原创 2019-05-23 11:49:08 · 6427 阅读 · 2 评论 -
-lpthread和-pthread的区别
编译程序包括 预编译, 编译,汇编,链接,包含头文件了,仅能说明有了线程函数的声明, 但是还没有实现, 加上-lpthread是在链接阶段,链接这个库。pthread是动态库,需要用-lpthread,所有的动态库都需要用-lxxx来引用用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthre...原创 2018-04-05 11:40:10 · 20139 阅读 · 1 评论 -
Linux下安装使用mysql connector(C++)
http://blog.csdn.net/cscmaker/article/details/7468374(1)使用C++版本的mysql connector首先需要安装和编译boost库。 可以在boost官网上下载源文件,自己进行编译。也可以直接使用命令下载和编译,具体命令为: apt-get install libboost-dev libboost-dbg libboost-doc...转载 2018-04-05 11:43:27 · 1491 阅读 · 0 评论 -
protobuf、xml、json 哪家强
因为面试中腾讯,京东等大公司都有被考到protobuf的知识,我居然只知道xml,json效率比protobuf大大降低,碎研究了下它希望对大家有所帮助! protobuf的介绍一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一,总体看来ProtoBuf的优势还是很明显的。protobuf是googl...原创 2019-02-18 21:20:03 · 2430 阅读 · 2 评论 -
lua 脚本语言的妙用
Lua介绍:Lua 是一个小巧的脚本语言。作者是巴西人(好像还没有接触过巴西人~)。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。Lua由标准C...原创 2019-02-18 23:22:57 · 5604 阅读 · 0 评论 -
磁盘智能容量监控
DISK=/dev/sda1LOG_PATH=/home/work/test/tttdf -h | grep $DISK | awk '{ print $5 }' | while read output;doline=$(ls -lt $LOG_PATH | tail -n1 | awk '{ print $9 }' )echo $lineusep=$(echo $output |...原创 2019-02-20 08:46:01 · 604 阅读 · 0 评论 -
命令行实现文件上传
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。文件上传命令:curl -F "file=@testv.jpg" -F "filesize=20569" -F "filename=testv.jpg" -F "filetime=2019...原创 2019-03-22 09:05:09 · 2504 阅读 · 0 评论 -
post实现图片上传
上传图片方式有很多,今天给大家介绍一个开源的库使用的方法,希望对大家有所帮助!#include <stdio.h>#include <string.h>#include <curl/curl.h>int main(int argc, char *argv[]){ CURL *curl; CURLcode res; st...原创 2019-03-22 15:14:47 · 9917 阅读 · 0 评论 -
时间时区转换小程序,GMT时间和加上时区后的时间和得到本地时区的小程序
项目中用到了时间转换的功能,计算GMT时间和加上时区后的时间,得到本地时区,我写了一个小程序希望对大家有所帮助!#include <stdio.h>#include <time.h>int main(int argc,char *argv[]){ time_t time_utc; struct tm tm_local; // G...原创 2019-04-17 18:02:03 · 1966 阅读 · 0 评论 -
更改海思shell环境
海思包第一次安装时你的虚拟机需要配置shell环境,方法如下:sudo dpkg-reconfigure dash选择no原创 2019-04-19 08:57:36 · 330 阅读 · 0 评论 -
libadd.a:error adding symbols编译错误的问题解决
交叉编译或别人给你的库报以下错误时,该如何解决呢?libadd.a: error adding symbols: Archive has no index; run ranlib to add onecollect2: error: ld returned 1 exit status下面我来具体分析下这个错误的原因symbols说明库里面的符号标记出问题了,我们具体查看下看...原创 2019-04-19 10:04:13 · 20733 阅读 · 5 评论 -
wifi芯片ping包延迟大影响数据的延迟时间问题的解决
之前公司碰到一个问题就是两块板子一个做ap模式一个做sta模式出现ping包过大的情况,这个问题折磨了我一周时间,其实只需要一条命令就可以搞定了,那就是关闭省电模式。具体命令如下:iw dev wlan0 set power_save off...原创 2019-05-20 10:01:31 · 3653 阅读 · 0 评论 -
使用系统函数scandir遍历目录的小程序
遍历整个目录,这个在录像搜索时比较有用,我们做设备的在做app录像查询,回放,拖拽时都需要用到录像检索扫描列表这个功能,我将介绍下简单的系统函数遍历目录的小程序。 #include <dirent.h> #include <stdio.h> #include <malloc.h> int main() { ...原创 2019-05-20 10:13:52 · 1513 阅读 · 0 评论 -
linux中关于lcd的疑惑
http://blog.chinaunix.net/uid-18921523-id-187419.html转载 2012-12-09 10:18:39 · 229 阅读 · 0 评论