![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux开发
文章平均质量分 86
希哈科技
希哈科技 (XIHA) 致力于成为全球领先的AIoT产品与技术服务解决方案提供商。把 “赋能万物,机器智能” 作为核心价值观。相信所秉承的 “星球万物,智慧物联” 的使命,会持续为客户创造长期价值。
展开
-
Event Poll epoll 详解
由于poll()和select()的局限,2.6内核引入了event poll(epoll)机制。虽然稍微复杂,但是epoll解决了它们共有的基本性能问题,并增加了一些新的特性。poll()和select()每次调用都需要所有被监听的文件描述符。内核必须遍历所有被监视的文件描述符。当这个表变得很大时,成千上百的文件描述符,每次调用时的遍历就成为了明显的瓶颈。1、创建一个新的epoll实例使用epoll_create()或者epoll_cerate1()创建一个epoll上下文。这里epoll_c转载 2021-02-03 14:27:46 · 778 阅读 · 0 评论 -
视频监控开发文档
转自:http://luwenchao100.blog.hexun.com/23060023_d.html 本文档是自己所整理的一份文档,部分是原创,还转贴了网上的一此资料(已经标明了),(难点是多线程的编写),是有源代码的,大家可以作为参考,用到的知 识是视频采集,压缩解压(xvid),实时传输(jrtp),基于qt库所写的,由于本人对qt下的多线程还不很了解,只做了单线程转载 2018-01-08 15:12:06 · 681 阅读 · 0 评论 -
gdb常用调试命令
1 .启动gdb调试程序 两种方式: A:gbd filename B: 启动gdb后,使用file filename2 .list(l) 查看程序(括号里为print缩写)3 .break(b) 函数名 在某函数入口处添加断点4 .break 行号 在指定行添加断点5 .br转载 2018-01-08 15:15:16 · 358 阅读 · 0 评论 -
shell编程的几个例子来了解shell脚本
以前没有接触过shell脚本,春节期间在老家看国嵌的视频,上面介绍了shell脚本的几个例子,就动手操作了一遍,挺有感觉,所以记录下来,供以后参考。第一个:比较两个数的大小在shell编程中,如果多个关键字写在一行的话,关键字之间应该用分号隔开,否则会出现错误无法运行。比如下面的程序:#!/bin/bash#将第一个命令行参数传递给变量a,第二个命令行参数传递给变量ba=$转载 2018-01-10 10:33:19 · 700 阅读 · 0 评论 -
Makefile中用宏定义进行条件编译(gcc -D)/在Makefile中进行宏定义-D
在源代码里面如果这样是定义的:#ifdef MACRONAME//可选代码#endif那在makefile里面gcc -D MACRONAME=MACRODEF或者gcc -D MACRONAME 这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。对于GCC编译器,有如下选项: -D macro=string,等转载 2018-01-26 15:08:44 · 161 阅读 · 0 评论 -
linux线程优先级
Linux内核的三种调度策略: 1.SCHED_OTHER 分时调度策略 2.SCHED_FIFO 实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3.SCHED_RR实 时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度转载 2018-02-02 15:21:09 · 226 阅读 · 0 评论 -
Linux进程间通信:信号量 semget()、semop()、semctl()
这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信 -- 信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问转载 2018-02-02 15:13:46 · 588 阅读 · 0 评论 -
linux基础——linux线程间通信及同步机制总结
线程间的通信有两种情况:1、一个进程中的线程与另外一个进程中的线程通信,由于两个线程只能访问自己所属进程的地址空间和资源,故等同于进程间的通信。2、同一个进程中的两个线程进行通信。本文说的就是第二种情况。关于进程间通信(IPC)可以看我的另一篇博文http://blog.csdn.net/a987073381/article/details/52006729转载 2018-02-02 15:12:09 · 239 阅读 · 0 评论 -
linux无root权限安装软件
在有些公司是不会给开发人员root权限的,但是开发人员有时候也需要装一些软件。没有root权限是否可以成功安装软件呢?答案是yes。本文以安装nginx为例说明下如何操作。没有root权限时往往也就没有权限操作一些系统目录,例如bin,usr等。所以在安装时需要配置将安装文件装在当前用户有权限操作的目录。安装nginx首先要下载安装文件,具体的安装步骤如下:1. 下载文件之后需要解压缩文件:tar转载 2018-01-17 21:12:22 · 7080 阅读 · 0 评论 -
linux中CURL的安装
curl是一款著名的字符界面下的下载工具,支持HTTP、HTTPS、FTP、FTPS、DICT、TELNET、LDAP、FILE,和GOPHER。此外还具有cookies支持、断点续传、FTP上传、密码支持、SSL支持和代理支持等特性。curl同时还提供了一套libcurl的库,开发者可以基于这个库开发其他下载工具。 curl 的官网下载地址:http://curl.haxx.se/dow转载 2018-01-17 21:11:29 · 1238 阅读 · 0 评论 -
Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH
Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATHPATH: 可执行程序的查找路径查看当前环境变量:echo $PATH设置:方法一:export PATH=PATH:/XXX 但是退出当前终端后就失效方法二:修改 ~/.bashrc 或 ~/.bash_profile或系统级别的/etc/profile1. 在其中添加例如export PATH=/opt/ActivePy原创 2018-01-17 21:10:26 · 63295 阅读 · 8 评论 -
/usr/bin/ld: cannot find -lxxx 的解决办法
在软件编译过程中,经常会碰到类似这样的编译错误:/usr/bin/ld: cannot find -lhdf5这表示找不到库文件 libhdf5.so,若是其它库文件,则是 cannot find -lxxx 了,其中 xxx 是库文件的名字。解决方法有:1. 安装此库文件和相关软件一般库文件属于某个软件,google搜索该软件并安装,或者使用 yum 安装。2. 将库文件所在路径添加到gc转载 2018-01-17 21:09:13 · 8319 阅读 · 0 评论 -
scanf函数输入之后不能立刻输出结果
#include#includeint main(){double p,r;int n;scanf("n=%d\n",&n);r=0.09;p=pow((1+r),n);printf("p=%f\n",p);return 0;}这个函数用键盘输入“n=10”之后按回车键不能立刻输出结果,要再随机输入一个字符后按回车键才能输出结果,为什么???原创 2018-02-02 17:15:27 · 1156 阅读 · 0 评论 -
彻底玩转 S3C2440 Linux 摄像头(包括USB和COMS摄像头)
编译系统Ubuntu10.04交叉编译器arm-linux-gcc 4.3.3硬件设备LT2440开发板 USB或者CMOS摄像头测试软件mjpg_streamer依赖库SDL-1.2.14 jpegsrc.v8b.tar.gz1.转载 2018-01-08 15:06:31 · 2267 阅读 · 1 评论 -
linux命令ps aux|grep xxx详解
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程, 而ps命令(Process Status)就是最基本同时也是非常强大的进程查看命令.使用该命令 可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的. ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连转载 2018-01-10 17:53:42 · 379 阅读 · 0 评论 -
Linux下安装驱动的两种方法
linux 编译安装驱动有两种,动态加载与静态加载 动态加载 一,编译,在指点内核树下编译,生成.o文件或.ko文件 二,将生成的.o或.ko文件拷到相应目录,一般是/lib/module/kernel下面 三,用insmod命令加载,用rmmod命令卸载 静态加载 静态加载主要就是编译内核。就是将编写好的驱动放进内核相应的目录下面。然后编译内核。然后运行编译好的内核。静态加载就是把驱动程序直接编...转载 2018-06-09 11:03:12 · 13473 阅读 · 1 评论 -
嵌入式系统移植cron和logrotate实现软件日志记录功能
在嵌入式Linux中实现软件的日志记录功能,方便日后对软件进行跟踪调试。使用logrotate日志滚动功能可以防止日志文件越来越大而影响系统存储空间。 logrotate的定期运行,需要借助cron工具,所以要先移植cron。 环境介绍: 1、电脑端系统:Ubuntu14.04 2、嵌入式系统:TI_SDK-08编译出来的。。 3、嵌入式硬件:BBB板 过程详述...转载 2018-05-07 14:05:45 · 1097 阅读 · 0 评论 -
openwrt uci设置命令
目录:1.UCI命令2.UCI的文件和流程3.UCI 的文件语法4.UCI 命令读写配置5.综合实例1.UCI命令一个众所周知的原因,在Linux下各种软件包有各种不同的配置脚本,每个配置脚本的语法格式和操作方式不同,这样的设计虽然可以体现出各软件包自身的优势,同时也增加了学习曲线。在这一点上OpenWrt的UCI无疑处理的更胜一筹。UCI是集中式配置信息管理接口(Unified Configur...转载 2018-03-20 14:43:54 · 2123 阅读 · 0 评论 -
Ubuntu16.04 Sublime text3 安装
安装过程非常简单,在terminal中输入:sudo add-apt-repository ppa:webupd8team/sublime-text-3 #添加sublime text 3的仓库sudo apt-get update #更新软件库sudo apt-get install sublime-text-installer #安装Sublime Text如果需要启动sublime,那么...转载 2018-03-20 14:24:25 · 238 阅读 · 0 评论 -
Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
获取本地 ip 地址,mac,通过域名获取对应的 ip,是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数),直接上代码: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <errno.h> 5 ...转载 2018-03-09 10:53:29 · 511 阅读 · 0 评论 -
linux C 实现新浪天气API
新浪天气API使用方法 API地址:http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0 红色标记为城市代码(也就是城市的中文转为GB2312的十六进制代码,比如北京对应的GB2312十六进制代码为B1B1BEA9),实际上需要查哪个城市就把红色标记改...转载 2018-03-07 11:39:00 · 573 阅读 · 0 评论 -
Linux C语言中怎么判断汉字
在处理套打程序时用到TextOut,但TextOut无法自动换行,只好动手写代码,可是处理到汉字部分时卡住了,搜索网上判断汉字的帖子,都语焉不详,经过一下午的研究,终于整理出一个简单的教程。其实判断汉字的代码很简单,简单到只有一行就可以了,但不理解汉字编码的基础,这一行代码却万万无法理解。常用的字符编码有以下三种:1、ASCII 只支持英文,全部为8位2、DBCS 支持英文和中文,但中文需要两个字...转载 2018-03-07 11:36:31 · 1384 阅读 · 0 评论 -
ubuntu查看系统位数
一、查看操作系统是32位的还是64位的在控制台输入:sudo uname --m回车后:如果显示i686,则表示安装了32位操作系统如果显示 x86_64,则表示安装了64位操作系统二、查看操作系统的版本号:cat /etc/issue比如输出:Ubuntu 14.04.4 LTS \n \l三、查看系统类型,其中转载 2018-01-30 09:50:12 · 1048 阅读 · 0 评论 -
JSON-C库使用
本文使用的Json C库:http://json-c.github.io/json-c/ 版本:0.11 头文件1-----json_object.h#ifdef__cplusplusextern"C" {#endif......转载 2018-02-03 20:10:36 · 10685 阅读 · 8 评论 -
Linux下回收子进程wait函数和waitpid函数的基本使用
1. 孤儿进程:父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程变为init进程 。2. 僵尸进程:子进程终止了,父进程尚未回收子进程,子进程残留资源(PCB)存放于内核中,子进程变成僵尸(Zombie)进程。 问:那为什么子进程要把PCB残留在内核里呢? 答:因为子进程终止后,它会把终止信号等退出状态(不管正常终止还是异常终止都对应一个信号)保存在内核的PCB里转载 2018-02-03 14:00:37 · 661 阅读 · 0 评论 -
Linux system函数返回值
例:[cpp] view plain copystatus = system("./test.sh"); 1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例转载 2018-02-01 16:21:22 · 608 阅读 · 0 评论 -
互斥锁 pthread_mutex_init()函数
转自:http://hi.baidu.com/jingweiyoung/item/55a895cc22b8abdeee183bb0linux下为了多线程同步,通常用到锁的概念。posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时转载 2018-02-01 15:00:43 · 362 阅读 · 0 评论 -
linux下 ls 排序
ls -lS 按大小降序排列 ls -l | sort -n -k5 按大小升序ls -lrt 按时间降序ls -lnt 按时间升序ls -l | sort -k9 按文件名升序(这是ls的默认输出方式)ls -lr转载 2018-01-16 09:49:54 · 1400 阅读 · 0 评论 -
Linux常用性能检测命令解释
1、uptime[root@smgsim02 ~]# uptime15:08:15 up 98 days, 4:19, 2 users, load average: 0.07, 0.29, 0.14当前时间 系统运行至今的时间 多少用户登录当前系统 分别是1分钟,5分钟,15分钟前至今的负载情况load average是队列平均长度,在队列中等待执行的进程数量该值越低,说明转载 2018-01-16 09:47:35 · 234 阅读 · 0 评论 -
Linux下的进程管理
在操作系统系统中,进程是一个非常重要的概念。一、Linux中进程的相关知识1、什么是进程呢?通俗的来说进程是运行起来的程序。唯一标示进程的是进程描述符(PID),在linux内核中是通过task_struck和task_list来定义和管理进程的。2、进程的分类1)根据在linux不同模式下运行分为:核心态:这类进程运行在内核模式下,执行一些内核指令(Ring 0)。转载 2018-01-16 09:46:14 · 191 阅读 · 0 评论 -
Linux下查看进程和线程
1. top 命令top命令查看系统的资源状况 load average表示在过去的一段时间内有多少个进程企图独占CPU zombie 进程 :不是异常情况。一个进程从创建到结束在最后那一段时间遍是僵尸。留在内存中等待父进程取的东西便是僵尸。任何程序都有僵尸状态,它占用一点内存资源,仅仅是表象而已不必害怕。如果程序有问题有机会遇见,解决大批量僵尸简单有效的办法是重起。kil转载 2018-01-16 09:44:23 · 200 阅读 · 0 评论 -
linux下查看线程数的几种方法
1、 cat /proc/${pid}/status2、pstree -p ${pid}3、top -p ${pid} 再按H 或者直接输入 top -bH -d 3 -p ${pid}top -H手册中说:-H : Threads toggle加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。4、ps xH手册中说:H Show thre转载 2018-01-16 09:43:27 · 8355 阅读 · 0 评论 -
ubuntu14.04设置开机自动挂载硬盘分区-wd
那么,我现在的目的是:使系统在开机的时候能够把我的硬盘分区自动挂载到/mdia/E文件夹中。所以,有以下几步:1.创建/media/E文件夹如果已经有这个文件夹,就不需要这一步了,如果没有,那么就要创建这个文件夹。[html] view plain copysudo mkdir /media/E 2.获取要自转载 2018-01-16 01:46:45 · 351 阅读 · 0 评论 -
Linux下C语言的socket网络编程
关于详细的服务器建立的步骤以及相关的socket套接字的知识我已经在python socket编程的文章中提到过了,大家可以参看那一篇博客来历接socket套接字编程的内容,由于要是用C相关的API所以这里采用了基于C语言的socket API编写相关的网络编程内容,具体的实现如下所示,调试通过。文章链接:http://www.cnblogs.com/uestc-mm/p/7296083.html转载 2018-01-31 00:05:15 · 427 阅读 · 0 评论 -
使用diff和patch指令生成文件差异和还原文件
创建一个新的文件夹test然后进入testmkdir testcd test 首先创建文件avim a.txt随便输入一段文字后保存不退出。稍微修改一下内容,另存为b.txt。使用以下指令生成文件差异diff -u a.txt b.txt > diff1.txt这是以a为原始文件,b为目标文件打开diff1.txt看看白色字体代表两个文件转载 2018-01-15 16:53:09 · 1203 阅读 · 0 评论 -
diff和patch
对于开源源码修改过程中的必经阶段:对源码打补丁,总是不够精通,搜索了补丁的原理的详细过程,如下:在移植或版本升级过程中,手动比对(用比对工具)转换是很费力的事情,特别是发生变化的文件非常多的情况下,“制作补丁、打补丁”可以简化这个过程。主要用到diff和patch。在这里不会把man在线文档上所有的选项都介绍一下,那样也没有必要。在99%的时间里,我们只会用到几个选项。1、di转载 2018-01-15 16:50:36 · 1842 阅读 · 0 评论 -
Makefile 文件自动生成方法
在本文中,将给大家介绍如何使用 autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make install”就可以把程序安装到Linux系统中去了。编译一个简单的源文件main.c,需要自动生成一个Makefile。以下是步骤:第一步:在某个目录转载 2018-01-15 10:06:35 · 3536 阅读 · 3 评论 -
如何查看linux系统下的各种日志文件 linux 系统日志的分析大全
日志分类:1. 连接时间的日志 连接时间日志一般由/var/log/wtmp和/var/run/utmp这两个文件记录,不过这 两个文件无法直接cat查看,并且该文件由系统自动更新,可以通过如下: w/who/finger/id/last/lastlog/ac 进行查看 [root@xhot ~]# who root tty1 2010-10-06 22:56转载 2018-01-15 10:05:17 · 331 阅读 · 0 评论 -
Linux常用命令
目标掌握linux的一些基本命令掌握linux常用的系统管理命令学会日常软件的安装在linux系统里面发布web项目正文用户账号文件 - passwdPasswd 是一个文本文件,用于定义系统的用户账号,该文件位于“/etc/passwd”。它包含了一个系统账户列表,给出每个账户一些有用的信息。 passwd文件中每行定义一个用户账号,一行中又有以“:”分割的多个字转载 2018-01-16 09:51:38 · 125 阅读 · 0 评论 -
scp命令获取远程文件
一、scp是什么?scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的,可能会稍微影响一下速度。二、scp有什么用?1、我们需要获得远程服务器上的某个文件,远程服务器既没有配置ftp服务器,没有开启web服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过scp命令便转载 2018-01-16 09:53:17 · 3053 阅读 · 1 评论