Linux应用编程
文章平均质量分 64
介绍相关Linux应用编程
路过的小熊~
有限的时间做有用的事
展开
-
Gnc c 强符号和弱符号高级编程应用
Gnc c 强符号和弱符号高级编程应用转载 2024-08-19 11:46:14 · 32 阅读 · 0 评论 -
Linux腾讯云服务器搭建环境
Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。转载 2023-11-07 11:38:46 · 170 阅读 · 0 评论 -
CMake基础教程
CMake基础教程原创 2023-06-22 21:05:32 · 589 阅读 · 0 评论 -
Ubuntu16.04 搭建MQTT服务器
Ubuntu16.04 搭建MQTT服务器转载 2022-08-01 19:53:36 · 513 阅读 · 0 评论 -
GCC编译选项参数介绍
GCC编译选项参数介绍转载 2022-07-25 15:31:32 · 1776 阅读 · 0 评论 -
常用Linux命令汇总
1. grep查找含有指定字符串的所有文件在当前目录下的多级目录中对文本进行递归搜索: 查找"text"字符串,可以这样:grep -rn "text" *: 表示当前目录所有文件,也可以是某个文件名-r 是递归查找-n 是显示行号-R 查找所有文件包含子目录-i 忽略大小写在多个文件中查找:grep "match_pattern" file_1 file_2 file_3 ...搜索多个文件并查找匹配文本在哪些文件中:grep -l "text" file1 fi原创 2021-12-29 17:27:18 · 5106 阅读 · 0 评论 -
Linux c语言实现 http文件传输
linux c 实现http文件传输转载 2022-07-17 16:29:59 · 695 阅读 · 1 评论 -
VIM快捷键使用汇总
vim的一些快捷键使用转载 2022-07-17 09:37:36 · 119 阅读 · 0 评论 -
Linux文件IO使用示例
Linux 文件IO使用示例原创 2022-07-16 20:28:08 · 81 阅读 · 0 评论 -
linux 之TFTP的使用
TFTP是用来下载远程文件的最简单网络协议。原创 2022-07-16 14:02:11 · 4929 阅读 · 0 评论 -
记录Ubuntu下各种压缩和解压方式
记录Ubuntu下各种压缩和解压方式转载 2022-07-14 15:24:19 · 417 阅读 · 0 评论 -
Linux基础之Find和Grep查找指令使用
Linux基础指令之find和gerp的一些常见用法原创 2022-07-10 14:05:45 · 1085 阅读 · 0 评论 -
Linux之软件包管理
大多数包系统都是围绕包文件的集合构建的。包文件通常是一个存档文件,它包含已编译的二进制文件和软件的其他资源,以及安装脚本。包文件同时也包含有价值的元数据,包括它们的依赖项,以及安装和运行它们所需的其他包的列表。 虽然这些包管理系统的功能和优点大致相同,但打包格式和工具却因平台而异:,它们的包格式是 .deb。APT 这款先进的包管理工具提供了大多数常见的操作命令:搜索存储库、安装软件包及其依赖项,并管理升级。在本地系统中,我们还可以使用 dpkg 程序来安装单个的 deb 文件,APT 命转载 2022-07-10 11:12:19 · 173 阅读 · 0 评论 -
Linux ulimit -n 修改
简介通过ulimit -n命令可以查看linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小,所以有必要重新设置linux系统里打开文件描述符的最大值。那么应该在哪里设置呢?最正确的做法是在/etc/security/limits.conf里设置:[root@localhost security]# ulimit -acore file size (blocks, -c) 0data seg size (kbytes,转载 2022-04-19 09:24:15 · 4774 阅读 · 0 评论 -
Linux 内存mmap()应用层和驱动层程序实现
用户空间和驱动程序的内存映射基本过程 首先,驱动程序先分配好一段内存,接着用户进程通过库函数mmap()来告诉内核要将多大的内存映射到内核空间,内核经过一系列函数调用后调用对应的驱动程序的file_operation中指定的mmap函数,在该函数中调用remap_pfn_range()来建立映射关系。映射的实现 首先在驱动程序分配一页大小的内存,然后用户进程通过mmap()将用户空间中大小也为一页的内存映射到内核空间这页内存上。映射完成后,驱动程序往这段内存写10个字节数据,用户进程将这转载 2022-04-12 11:24:44 · 1532 阅读 · 0 评论 -
线程阻塞原因分析介绍
导致线程阻塞的原因主要有以下几方面。1、线程进行了休眠:线程执行了Thread.sleep(int n)方法,线程放弃CPU,睡眠n毫秒,然后恢复运行。2、线程等待获取同步锁才能进行下一步操作:线程要执行一段同步代码,由于无法获得相关的同步锁,只好进入阻塞状态,等到获得了同步锁,才能恢复运行。3、线程执行wait()进入阻塞状态:线程执行了一个对象的wait()方法,进入阻塞状态,只有等到其他线程执行了该对象的notify()或notifyAll()方法,才可能将其唤醒。4、等待相关资源:线程执行I转载 2022-04-11 18:03:54 · 7673 阅读 · 3 评论 -
Linux shell编程
1.什么是shellshell是内核的保护壳从程序角度看,shell本身是一种用C语言写的程序从用户角度看,shell是命令解释器同时,shell还是一门编程语言 shellscript2.shell类型sh bash csh ksh kcsh... //查看当前系统上有效的shellecho $SHELL //查看当前的登录shellLinux系统选择bash作为系统的默认登录shell3.bash特点及使用1.命令历史bash能够记录你使用过的所有指令,上下键可以找原创 2022-03-29 21:25:24 · 779 阅读 · 0 评论 -
嵌入式arm linux自动更新网络时间及其NTP移植
有些嵌入式设备中为了节省成本或者体积原因都没有配备掉电保存电池,每次上电之后就需要人为手动的更新系统时间,而且系统时间也不准确。有些需要得到实时的比较准确的时间,以和服务器或是设备之间进行时间同步,但是很多嵌入式设备又不能通过人工设置时间的方式来同步时间,需要自动从网络上获取时间,这就需要用到NTP。NTP是网络时间协议(Network Time Protocol)的简称,它是用来同步网络中各个计算机设备的时间的协议。目前有第三方的代码可以支持NTP,本文讲诉ntpclient的用法。ntpclient转载 2022-03-24 10:56:44 · 1643 阅读 · 0 评论 -
嵌入式arm linux下的分区文件变为Read-only解决办法
1.使用mount指令查询分区属性2.修改重新挂载分区(/mnt目录是分区挂载的目录)mount -o rw,remount /mnt3.再使用mount命令查看分区属性 已经变为rw出现原因分析:可能是软件运行过程中操作了位于分区中文件的内容,但是没有同步,导致整个分区都会变成Read-Only属性查看分区格式,可能因为格式不是ext4系列...转载 2022-03-22 18:03:28 · 604 阅读 · 0 评论 -
Linux c定时器使用
使用Linux api定时器方法1#include<stdio.h>#include<signal.h>#include<sys/time.h>//itimerval结构体的定义int handle_count=0;void set_time(void){ struct itimerval itv; itv.it_interval.tv_sec=10;//自动装载,之后每10秒响应一次,不断触发定时器 itv.it_interval.tv_use转载 2022-03-18 12:14:24 · 1600 阅读 · 0 评论 -
C++ 线程使用mutex实现共享资源保护需注意的问题
一、C++互斥量< mutex >头文件介绍Mutex 系列类(四种)- std::mutex,最基本的 Mutex 类。- std::recursive_mutex,递归 Mutex 类。- std::time_mutex,定时 Mutex 类。- std::recursive_timed_mutex,定时递归 Mutex 类。Lock 类(两种)- 列表内容std::lock_guard,与 Mutex RAII 相关,方便线程对互斥量上锁。- std::unique_l转载 2022-03-14 16:36:11 · 618 阅读 · 0 评论 -
Linux UDP编程
简介UDP协议与TCP协议一样用于处理数据包,在OSI模型中,两者都位于传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。代码实现#ifndef _SOCKET_HPP_#define _SOCKET_HPP_#include <iostream>#include <sstream>#include <exception>#include <strin原创 2022-03-13 20:38:38 · 3385 阅读 · 0 评论 -
Linux 文件系统目录及其作用介绍
目录介绍/bin 二进制可执行命令/dev 设备特殊文件/etc 系统管理和配置文件/etc/rc.d 启动的配置文件和脚本/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件/sbin 超级管理命令,这里存放的是系统管理员使用的管理程序/tmp 公共的临时文件存储点/root 系统管理员的主目录/mnt 系统提供这个目录是让用户临时挂载其他的文件系统/l原创 2022-03-12 23:18:04 · 1309 阅读 · 0 评论 -
Linux arm UUID获取
简介在某些情况下,需获取UUID,进行一些唯一码的的标识,或者运算。获取方式#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/mman.h>#define DBG_INFO printf#define DBG_ERR printf#define BIT原创 2022-03-09 10:04:11 · 167 阅读 · 0 评论 -
Linux线程同步与Windows线程同步
简介线程同步概念:在多线程下,在一段时间内只允许一个线程访问资源,不允许其它线程访问。在WIN32中,同步机制主要有以下几种:(1)事件(Event);(2)信号量(semaphore);(3)互斥量(mutex);(4)临界区(Critical section)。事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件可分为两类:(1)手动设置:这种原创 2022-03-07 10:12:28 · 736 阅读 · 0 评论 -
使用Shell脚本编写Linux守护进程
服务端程序一般需要长期后台稳定运行,除了保证程序本身的健壮外,还需要用到一些守护程序。现分享一个简单的Shell脚本的方式:#! /bin/sh#进程名字可修改PRO_NAME=railsCMD="nohup bundle exec rails server webrick -p3000 -b 0.0.0.0 -e production >/dev/null 2>&1 -d &"while true ; do #用ps获取$PRO_NAME进程数量转载 2022-02-27 17:39:14 · 1222 阅读 · 0 评论 -
Linux进程通讯之共享内存的使用(指针操作方式)
函数说明1、将共享内存挂载至进程:void *shmat(int shmid, const void *shmaddr,int shmflg);参数shmid是要附加的共享内存区标示符。总是把参数shmaddr设为0。参数shmflg可以为SHM_RDONLY,这意味着附加段是只读的。shmat成功返回被附加了段的地址,失败返回-1,并设置errno。2、将附在共享内存上的进程分离:int shmdt(const void *shmaddr);参数必须是挂在函数返回的指针。这个地址转载 2022-02-27 15:19:05 · 651 阅读 · 0 评论 -
Linux静态库与动态库的生成与使用
Linux 静态库与动态库生成步骤生成动态库:#首先,生成带有PIC选项的.o文件 gcc -fPIC -c *.c -I ../include#将.o文件打包为动态库gcc -shared -o libDynamic.so *.o生静态库:#首先,生成普通的.o文件 gcc -c *.c -I ../include#生成静态库ar rcs libStatic.a *.o优缺点静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库(方便移原创 2022-02-27 12:51:28 · 362 阅读 · 0 评论 -
关于编译优化等级
gcc 编译优化gcc --help=optimizers //列出所有优化选项常见优化选项:有 -O0、-O1、-O2、-O3、-Os、-Ofast、-Og 几个优化等级-O0这个等级(字母“O”后面跟个零)关闭所有优化选项,也是CFLAGS或CXXFLAGS中没有设置-O等级时的默认等级。这样就不会优化代码,这通常不是我们想要的。-O1这是最基本的优化等级。编译器会在不花费太多编译时间的同时试图生成更快更小的代码。这些优化是非常基础的,但一般这些任务肯定能顺利完成。-O2-O1原创 2022-02-23 10:13:19 · 2926 阅读 · 1 评论 -
Linux c 记录一些函数的常见用法和应用场景
文件状态获取stat函数1.获取文件大小int getSize(char *filename){ struct stat statbuf; stat(filename,&statbuf); unsigned int size=statbuf.st_size; if(size<0) return 0; return size;}access函数常见场景检测文件状态,以便后续读、写、执行、状态获取等操作。依赖的头文件 #include &l原创 2022-02-21 09:37:10 · 540 阅读 · 0 评论 -
Linux 设备驱动编写之 异步通知
优点异步通知是一种监听机制,监听信号对事件进行处理,避免轮询的缺点。Linux驱动关键代码编写struct imx6uirq_dev{ // ... struct fasync_struct *async_queue; /* 异步相关结构体 */}/* * @description : fasync函数,用于处理异步通知 * @param - fd : 文件描述符 * @param - filp : 要打开的设备文件(文件描述符) * @param - on原创 2022-02-19 19:35:38 · 32 阅读 · 0 评论 -
cJson ---json数据解析与数据打包成Json
1.json数据解析样例如下;{“cmd”: “start”, “nonce”: “11223344556”}//create json rootcJSON *pJsonRoot = NULL;unsigned char data[ ] = {"cmd": "start", "nonce": "11223344556"}; pJsonRoot= cJSON_Parse((const char*)data);if(pJsonRoot == NULL){ qDebug() <&原创 2022-02-18 10:56:07 · 791 阅读 · 0 评论 -
Linux应用之串口编程
/声明:本人只是见到这篇文章对我帮助很大才转载的,但是这个完整的程序里面本来有语法错误的,现在让我改过来了/Author :tiger-johnWebSite :blog.csdn.net/tigerjbEmail :jibo.tiger@gmail.comUpdate-Time : 2011年2月14日星期一Tiger声明:本人鄙视直接复制本人文章而不加出处的个人或团体,但不排斥别人转载tiger-john的文章,转载 2021-12-30 14:51:18 · 5435 阅读 · 0 评论 -
Linux应用编程之Socket TCP编程
Socket是应用层与协议族通信的中间软件抽象层,它是一组接口。先附图一张,虽然是讲解TCP的socket,但是道理相通1.基本socket函数Linux系统是通过提供套接字(socket)来进行网络编程的。网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符。socket也有一个类似于打开文件的函数:socket(),调用socket(),该函数返回一个整型的socket的描述符,随后的连接建立、数据传输等操作也都是通过该socket实现。1、socket函数synt转载 2021-12-30 15:29:54 · 271 阅读 · 0 评论 -
linux应用编程之内存的IPC通讯(共享内存,信号量数组,消息队列)
常用的IPC分为两个类别,一是基于文件,而是基于内存基于文件的分别有匿名管道,有名管道,普通的文件共享,socket文件如果要看基于文件的IPC,请参考:http://blog.csdn.net/xiaoxiaopengbo/article/details/78431018基于内存的有普通内存共享(本文章没有介绍),共享内存,共享信号量,消息队列本文就针对linux基于内存的IPC目前介绍一个工具ipcs运行一下ipcs的界面是:主要包含共享内存段,信号量数据,消息队列ipcs –m是查看共转载 2021-12-30 17:15:07 · 264 阅读 · 0 评论 -
linux应用编程之基于文件的IPC(匿名管道pipe,命名管道mkfifo,普通文件,socket文件)
常用的IPC分为两个类别,一是基于文件,而是基于内存基于文件的分别有匿名管道,有名管道,普通的文件共享,socket文件基于内存的有普通内存共享(本文章没有介绍),共享内存,共享信号量,消息队列如果要看基于内存的IPC,请参考:http://blog.csdn.net/xiaoxiaopengbo/article/details/78431042本文就针对linux基于文件的IPC一.匿名管道pipe管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可转载 2021-12-31 09:17:06 · 397 阅读 · 0 评论 -
Linux应用编程之线程同步(互斥量、信号量、条件变量、生产消费者模型)
为什么要线程同步?线程间有很多共享资源,都对一个共享数据读写操作,线程操作共享资源的先后顺序不确定,可能会造成数据的冲突看一个例子两个线程并行对全局变量count++ (采用一个val值作为中间变量,模拟寄存器工作方式,后面会详解)#include <stdlib.h>#include <pthread.h>#include <unistd.h>#define NLOOP 5000 //循环次数int count = 0;//全局资源void* f转载 2021-12-31 09:30:34 · 296 阅读 · 0 评论 -
Linux 多进程编程
进程简介进程是系统进行资源分配和调度的基本单位,是操作系统结构的基础。注意:创建一个进程时,同一个程序会从进程创建的位置执行两次。相关apipid_t fork() //#include <unistd.h> 创建进程void exit(int status) //#include <stdlib.h> 退出进程,退出时会调用atexit注册的函数,先注册的后调用,exit函数还会按需调用fclose函数关原创 2022-01-28 22:04:30 · 2056 阅读 · 0 评论 -
linux 多线程编程-互斥锁问题之tpp.c:63: __pthread_tpp_change_priority failed 问题解决
今天让程序跑了一个多线程,发现线程运行后,报以下错误:__pthread_tpp_change_priority: Assertion `new_prio == -1 || (new_prio >= fifo_min_prio && new_prio <= fifo_max_prio)’ failed.线程函数如下:void receiveServiceData(){pthread_mutex_lock(&MsgMutex);//应用程序pthread_mu原创 2022-02-11 13:55:34 · 2398 阅读 · 0 评论