linux系统应用
文章平均质量分 87
一口Linux
《从零开始学ARM》作者,长期分享嵌入式、linux、网络、arm知识。
展开
-
从零开始一个git操作实例,图文并茂
徒弟不懂git怎么用,于是写了篇文章,把本地git操作从头写了一遍,自己去看吧!•Git是一个免费、开源的、分布式版本控制系统•它使用一个特殊的叫做仓库的数据库来记录文件的变化•仓库中的每个文件都有一个完整的版本历史记录2)工作流转Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及本地仓库。你的本地仓库由 git 维护的三棵"树"组成。工作目录:它持有实际文件;暂存区(Index):它像个缓存区域,临时保存你的改动;本地仓库(Respository):可以把本地仓库理解成一个原创 2024-09-22 23:29:56 · 934 阅读 · 0 评论 -
一款非常不错的逻辑分析仪
作为一名嵌入式软件/硬件工程师,要会使用各种仪表仪器,尤其这两个仪器可以监测各种数据线、信号线波形,可以帮我们快速定位产品问题,缩短开发周期。这款仪器非常容易上手,尤其在一些常见的协议解析这块,表现非常不错。本文简介下这款设备,并通过抓取某lcd屏幕的spi协议波形,来讲解他的使用方法。原创 2024-04-07 20:10:58 · 1896 阅读 · 0 评论 -
Linux程序之可变参数&&选项那些事!
功能:getopt是用来解析命令行选项参数的,但是只能解析短选项: **-d 100**,不能解析长选项:**--prefix**参数argc:main()函数传递过来的参数的个数argv:main()函数传递过来的参数的字符串指针数组optstring:选项字符串,告知 getopt()可以处理哪个选项以及哪个选项需要参数返回:如果选项成功找到,返回选项字母;如果所有命令行选项都解析完毕,返回 -1;如果遇到选项字符不在 optstring 中,返回字符 ‘?原创 2023-11-22 21:04:29 · 795 阅读 · 0 评论 -
和xshell和crt说再见,认识了一款51k star多端跨平台终端神器,强大酷炫
Tabby(以前称为Terminus)是一款高度可配置的终端仿真器、SSH 和串行客户端。开源且跨平台,支持在Windows、macOS和Linux系统下使用。源码下载官网地址。原创 2023-11-08 22:23:32 · 770 阅读 · 0 评论 -
Linux下C语言操作网卡的几个代码实例?特别实用
前面写了一篇关于网络相关的文章:如何获取当前可用网口。那么如何使用C语言直接操作网口?比如读写IP地址、读写MAC地址等。原创 2023-09-30 11:33:47 · 432 阅读 · 0 评论 -
简简单单教你如何用C语言实现获取当前所有可用网口!
proc目录是内核提供给我们的查询中心,通过查询该目录下的文件内容,可以获取到有关系统硬件及当前运行进程的信息,如 CPU 信息、负载信息、系统内存信息、磁盘 IO 信息等。在 Linux 系统中,/proc 目录是一个位于内存中的伪文件系统。所以我们要列举出所有可用的网口名称,可以通过查看改文件来实现,该函数返回一个指针,指向字符串s中最后一个出现的字符c位置。,该文件是内核维护,所有可用的网口均会同步到该文件中。该函数用于列举所有可用的网口。原创 2023-09-12 22:23:25 · 499 阅读 · 0 评论 -
在程序里面执行system(“cd /某个目录“),为什么路径切换不成功?
彭老师,问下,在程序里面执行system(“cd /某个目录”),这样会切换不成功,为啥呢实例代码:粉丝的疑惑是明明第10行执行了操作,为什么12行执行的结果提示的仍然是当前目录?这是一个很不错的问题,要想整明白这个问题,需要知道system的原理。原创 2023-04-25 19:48:47 · 1231 阅读 · 0 评论 -
Linux 进程编程入门
关于进程和线程的关系,之前一口君写过这几篇文章,大家可以参考下。本文从头带着大家一起学习Linux进程《搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?》《[粉丝问答6]子进程进程的父进程关系》《多线程详解,一篇文章彻底搞懂多线程中各个难点》《一个多线程的简单例子让你看清线程调度的随机性》Linux 进程篇一、进程相关概念了解进程的时候先来了解几个问题,明白以下问题,就懂了进程的概念1.什么是程序,什么是进程,两者之间的区别?程序是静态的概念,gcc xxx.c -o pro原创 2022-04-26 19:02:02 · 6332 阅读 · 3 评论 -
从0实现基于Linux socket聊天室-增加数据加密功能-6
之前更新过从0实现聊天室的5篇文章,但是数据在网络中是裸奔状态,全部是明文,本文一口君继续在原有代码基础上增加数据加密功能。前面文章链接:《从0实现基于Linux socket聊天室-多线程服务器模型-1》《从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2》《从0实现基于Linux socket聊天室-实现聊天室的登录、注册功能-3》《从0实现基于Linux socket聊天室-增加公聊、私聊-4》《从0实现基于Linux socket聊天室-增加数据库sqlite功原创 2021-12-20 21:09:42 · 2163 阅读 · 4 评论 -
从0实现基于Linux socket聊天室-增加数据库功能-5
之前更新过从0实现聊天室的4篇文章,很多粉丝朋友还是觉得内容相对简单,本文一口君会在原有代码基础上增加数据库操作功能,后续文章还会增加文件传输功能。前面文章链接:《从0实现基于Linux socket聊天室-多线程服务器模型-1》《从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2》《从0实现基于Linux socket聊天室-实现聊天室的登录、注册功能-3》《从0实现基于Linux socket聊天室-增加公聊、私聊-4》本文需要增加数据库功能,关于数据库的基础知识点原创 2021-11-15 21:26:10 · 1572 阅读 · 0 评论 -
Linux性能调优工具-9张图-包你用到爽!抓紧收藏吧
这里包含Linux 性能资料的工具图。这些使用大字体可以用作海报幻灯片。也可以将它们打印出来贴在办公室墙上。它们展示了:Linux 可观察性工具、 Linux 静态性能分析工具、 Linux 基准测试工具、 Linux 调优工具和Linux sar。性能观察工具:静态性能工具性能压测工具:性能调优工具sarperf-tools追踪工具BPF性能工具:...原创 2021-09-29 21:44:47 · 6720 阅读 · 0 评论 -
Linux并发与同步
典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。多线程我们先来看一下什么是多线程。在Linux从程序到进程中,我们看到了一个程序在内存中的表示。这个程序的整个运行过程中,只有一个控制权的存在。当函数被调用的时候,该函数获得控制权,成为激活(active)函数,然后运行该函数中的指令。与此同时,.原创 2021-02-22 19:21:55 · 435 阅读 · 0 评论 -
Linux进程间通信
一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。E、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程原创 2021-02-22 18:29:10 · 428 阅读 · 0 评论 -
Linux进程基础
计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令(instruction)。所谓的程序(program),就是这样一系列指令的所构成的集合。通过程序,我们可以让计算机完成复杂的操作。程序大多数时候被存储为可执行的文件。这样一个可执行文件就像是一个菜谱,计算机可以按照菜谱作出可口的饭菜。那么,程序和进程(process)的区别又是什么呢?进程是程序的一个具体实现。只有食谱没什么用,我们总要按照食谱的指点真正一步步...原创 2021-02-22 18:22:34 · 365 阅读 · 0 评论 -
Linux信号量(2)-POSIX 信号量
上一章,讲述了SYSTEM V信号量,主要运行于进程之间,本章主要介绍POSIX信号量:有名信号量、无名信号量。POSIX信号量POSIX信号量进程是3种 IPC(Inter-Process Communication) 机制之一,3种 IPC 机制源于 POSIX.1 的实时扩展。Single UNIX Specification 将3种机制(消息队列,信号量和共享存储)置于可选部分中。在 SUSv4 之前,POSIX 信号量接口已经被包含在信号量选项中。在 SUSv4 中,这些接口被移至了基本规原创 2020-10-15 08:09:11 · 610 阅读 · 0 评论 -
Linux库概念,动态库和静态库的制作,如何移植第三方库
一、什么是库?在windows平台和linux平台下都大量存在着库。一般是软件作者为了发布方便、替换方便或二次开发目的,而发布的一组可以单独与应用程序进行compile time或runtime链接的二进制可重定位目标码文件。本质上来说库是一种可执行代码的二进制形式,这个文件可以在编译时由编译器直接链接到可执行程序中,也可以在运行时由操作系统的runtime enviroment根据需要动态加载到内存中。一组库,就形成了一个发布包,当然,具体发布多少个库,完全由库提供商自己决定。由于windows和原创 2020-10-22 16:08:23 · 1002 阅读 · 0 评论 -
一文搞懂嵌入式数据库sqlite,从命令到C操作,收藏即可
一、sqlite的基本操作前言数据在实际工作中应用非常广泛,数据库的产品也比较多,oracle、DB2、SQL2000、mySQL;基于嵌入式linux的数据库主要有SQLite, Firebird, Berkeley DB, eXtremeDB。本文主要讲解数据库SQLite,通过这个开源的小型的嵌入式数据库带领大家掌握一些基本的数据库操作,这些操作在很多系统中都是通用的,可谓学一通百。SQLiteSQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库原创 2020-11-04 18:30:00 · 2704 阅读 · 0 评论 -
进程组、会话、控制终端概念,如何创建守护进程?
守护进程概念:守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。周期性的执行某种任务或等待处理某些发生的事件。Linux系统有很多守护进程,大多数服务都是用守护进程实现的。比如:像我们的tftp,samba,nfs等相关服务。UNIX的守护进程一般都命名为*d的形式,如httpd,telnetd等等。生命周期:守护进程会长时间运行,常常在系统启动时就开始运行,直到系统关闭时才终止。守护进程不依赖于终端从终端开始运行的进程都会依附于这个终端,这个终端称为这些进程的控制终原创 2020-10-19 11:20:53 · 676 阅读 · 0 评论 -
从0实现基于Linux socket聊天室-实现聊天室的公聊、私聊功能-4
上文中,我们基于多线程的框架,实现了注册和登录的功能,这一章,我们在此基础上来实现公聊、私聊、显示在线用户列表功能。客户A:yikoulinux客户B:yikoupeng运行截图公聊客户B发公聊客户A收到信息:服务器log:私聊客户B私发信息给A:客户A收到的消息:显示在线用户信息...原创 2020-09-16 08:30:29 · 2413 阅读 · 1 评论 -
SQLite向arm板子的移植
SQLite向arm-linux的移植SQLite是一个开源的嵌入式关系数据库,我们用它来管理从M0端接收的数据,将检测到的仓库信息存储起来。SQLite环境的建立:首先从下载最新版本的sqlite源码包,我下载的是sqlite-amalgamation-3.7.3.tar.gz,并将下载的文件解压。 在解压生成的 sqlite-3.7.3 目录下执行./configure--host=arm-none-linux-gnueabi--prefix=/home/linux/project/sqli原创 2020-09-22 22:10:11 · 635 阅读 · 0 评论 -
从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2
根据 《0 基于socket和pthread实现多线程服务器模型》所述,server创建子线程的时候用的是以下代码: pconnsocke = (int *) malloc(sizeof(int)); *pconnsocke = new_fd; ret = pthread_create(&tid, NULL, rec_func, (void *) pconnsocke); if (ret < 0) { perror("pthread_create err");原创 2020-09-11 08:19:45 · 1035 阅读 · 0 评论 -
从0实现基于Linux socket聊天室-多线程服务器模型-1
前言Socket在实际系统程序开发张中,应用非常广泛,也非常重要。实际应用中服务器经常需要支持多个客户端连接,实现高并发服务器模型显得尤为重要。常见的并发服务器模型select1 一个误区很多人认为它最大可以监听1024个,实际上却是文件描述符的值不能大于等于1024,所以除掉标准输入、输出、错误输出,一定少于1024个,如果在之前还打开了其他文件,那会更少2 select返回后,一般要轮询fd_set,发现新连接要加上,连接断开要去掉,这个过程一定要这样做:select之前把fd_set临时拷贝原创 2020-09-10 09:50:29 · 2276 阅读 · 4 评论 -
从0实现基于Linux socket聊天室-实现聊天室的登录、注册功能-3
上一篇我们已经讲了如何搭建一个多线程的服务器模型,可以支持多个客户端同时连接服务器,本篇我们来实现多个客户端,如何实现向服务器注册信息,并实现登录的功能。信令接着上一篇的实例代码继续增加功能。要实现注册和登录功能,那么我们就必须要让服务器和客户端在交互数据包的时候按照统一的格式收发信令,现在我们定义交互信令格式:注册的客户端信息需要存储在服务器,为了简单起见,我们暂时不用数据库存储,只定义一个全局的数组保存客户端信息,并且规定只允许20个客户端登录。功能流程图现在我们根据功能,首先画一个流程图。原创 2020-09-14 10:01:05 · 5281 阅读 · 19 评论 -
嵌入式数据库sqlite3【进阶篇】-如何用C语言操作sqlite3,一文搞懂
sqlite3编程接口:主要包括2个结构体和5个函数,如下sqlite3 *pdb, 数据库句柄,跟文件句柄FILE很类似sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句sqlite3_open(), 打开数据库sqlite3_exec(), 执行非查询的sql语句sqlite3_prepare(), 准备sql语句,执行select语句或者要使用parameter bind时,用这个函数(封装了sqlite3_exec)Sqlite3_原创 2020-09-22 08:57:17 · 1351 阅读 · 2 评论 -
嵌入式数据库sqlite3【进阶篇】-子句和函数的使用,小白一文入门
在《嵌入式数据库sqlite3命令操作基础篇-增删改查,小白一文入门》一文中交了大家如何掌握sqlite3的基本操作增删改查,本文介绍一些其他的操作。数据库准备新建数据库,company.db。设计一个表格employee,内容如下:idnamedepsalary1马云market60002马化腾tech70003李彦宏trs86004张朝阳trs60005罗永浩tech89006王欣market4000原创 2020-09-18 08:08:59 · 1680 阅读 · 0 评论 -
嵌入式数据库sqlite3【基础篇】-基本命令操作,小白一看就懂
安装sudo apt-get install sqlite sqlite3 安装应用程序sudo apt-get install libsqlite3-dev 安装库+头文件,用代码操作数据库必须安装sudo apt-get install sqlitebrowser 图形化工具建立数据库数据类型数据类型定义数据类型 NULL表示该值为NULL值。INTEGER无符号整型值。REAL浮点值。TEXT文本字符串,存储使用的编码方式原创 2020-09-17 08:17:28 · 903 阅读 · 0 评论