
Linux编程
duapple
这个作者很懒,什么都没留下…
展开
-
解决 :command not found
在执行脚本时,出现多行报错::command not found:command not found:command not found但是我没有对.sh文件做任何修改。并且打开查看,内容和原来也是一模一样。并没有任何变化。尝试将所有命令注释掉,任然会报上述错误。新建一个test.sh,运行,没有错误。然后尝试将报错的.sh内容粘贴到test.sh中,运行,没有错误。好吧,说明bash完好。并且.sh中的内容也是完全没有问题的。那么问题在哪儿呢?最后发现是在vscode中把文件以其它编原创 2020-08-28 16:08:11 · 1053 阅读 · 0 评论 -
如何在进程进程终止时执行函数
通过Linux系统调用来完成这个操作,atexit( )和on_exit( )。atexit( )函数原型:#include <stdlib.h>int atexit (void (*function)(void));示例:#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <signal.h>static void my_handler (void原创 2020-09-03 13:31:04 · 871 阅读 · 0 评论 -
Nordic cJSON库
Nordic cJSON库创建JSON对象后,只需要cJSON_Delete()最顶层的节点对象,就能释放所有的子节点对象。释放后,将无法使用任意子节点的JSON对象,否则将出错。并且,被释放掉的JSON对象,无法再次使用cJSON_Delete()进行释放。...原创 2020-12-31 21:22:47 · 230 阅读 · 0 评论 -
J-Link 命令行烧录
J-Link 命令行烧录因为我有很需要烧录的HEX文件,用J-Flash烧录起来很不方便,因此尝试用批处理命令来进行烧录处理。这样的,只需要一个批处理脚本,就可以完成整个烧录。这里我有两个HEX文件,一个Bin文件。两个HEX分别是Softdevice和Bootloader,Bin文件是APP。在烧录时,为了方便,我将这三个文件进行合并,合并成一个HEX文件。方法:先将Bin文件转化为HEX文件,然后合并三个HEX文件为一个HEX文件。将用到的命令写程一个批处理脚本firmware_product_原创 2021-01-05 21:33:24 · 16009 阅读 · 7 评论 -
log 日志处理(linux shell 脚本方式 or Python)
log 日志处理我需要从log日志中取出部分数据,数据为Device ID内容,该数据所在的行有Device ID字符串行标记。#获取所有含 “Device ID”字符串的行cat log*.txt | grep "Device ID: " > tmp1.txt这样就拿到了所有目标数据的行。但是有的行不含目标数据,但是含有Device ID标记。因此需要删除这些行。#删除含 “Device ID”字符串但是没有正确数据的行sed -i '/Cannot get device ID.原创 2021-01-12 11:11:03 · 2819 阅读 · 5 评论 -
解决 error while loading shared libraries: libicui18n.so.63: cannot open shared object file
出现这个问题的原因是:系统中没有对应版本的共享库导致的。可能是不存在,或者版本不对。不存在不存在的话,直接安装就行了。$ yay -S icu这里安装的是最新版本的,如果还是不对的话,采用下面的方法。版本不对这个就比较麻烦了。我用的manjaro,系统中装了更高版本的,并且aur仓库中只有最新版本的库。因此只能手动安装。在 软件仓库 中找到对应版本的icu进行安装。$ sudo pacman -U ./icu-63.1-1-x86_64.pkg.tar.xz如果电脑存在更高版本的话,原创 2021-06-10 00:12:11 · 10305 阅读 · 1 评论 -
Golang socket编程
用Go语言实现unix socket通信。这里用Go语言写服务端,C语言写客户端。Gopackage mainimport ( "net" "os" "os/signal" "syscall" logs "github.com/sirupsen/logrus")func main() { os.Remove("/tmp/sock") conn, err := net.ResolveUnixAddr("unix", "/tmp/sock") if err != nil {原创 2022-04-13 13:41:38 · 1143 阅读 · 0 评论 -
gsoap 远程调用举例
gsoap 远程调用举例gsoap生成Web Service框架代码。这里通过gsoap官网**Example XML SOAP server ©和Example XML SOAP client ©**例子来实现sgoap生成框架,并实现远程调用。gsoap官网例程:https://www.genivia.com/dev.html#server-c1、SOAP服务器将gsoap安装路径下的import和custom文件夹,stdsoap2.h和stdsoap2.h拷贝到需要生成文件的路径中。利用原创 2020-05-25 17:48:01 · 594 阅读 · 1 评论 -
Linux C语言 Zlib 实现解压zip文件
Linux C语言 实现解压zip文件因为在做嵌入式Linux,做OTA功能的时候需要加压zip升级包。所以需要用到zip文件的解压缩功能。就想着能不能用zlib来完成这个功能。在网上一通找以后,发现教程千篇一律,要么是打着解压文件的标题解压buff内容,要么是c++完成的。好不容易有两篇C语言解压缩文件的,结果并不能用。最后还是只能看英文文档,终于找到案例了。下面记录如何实现的,其实还是非常的简单,例程写得比较复杂,我只用到一个解压功能,我基本上取了一部分代码,没有太大改动。有需要的话,可以再进行精原创 2020-11-11 19:33:44 · 8553 阅读 · 1 评论 -
Linux 网桥功能使用
网桥是在数据链路层,将两个LAN连接起来,根据MAC地质来转发帧,可以看作是低层的路由器。原创 2022-09-22 22:14:58 · 2545 阅读 · 0 评论 -
记录线程退出(thread_cancel)导致的死锁问题
分别创建三个线程,在线程中使用日志库分别打印不同的内容。延迟2s后取消线程并退出。反复运行上面的代码。有概率出现阻塞的情况,经分析发现是死锁。将while(1)中的延时函增加,加到一定程度后,基本不会出现阻塞卡死的情况。原创 2022-09-18 17:38:44 · 575 阅读 · 0 评论 -
记录fork子进程执行execl阻塞卡死的问题
上面的函数是一个线程执行函数,调用这个函数,有概率会出现阻塞的情况。网上翻了一下资料,造成这个的原因是产生了死锁。因为我使用了自己的日志库,日志库里面有互斥锁用来保证输入数据的一致性。当父进程中的线程有调用日志打印函数时,会对互斥锁上锁,在还未解锁的情况,如果这时刚好fork子进程成功,并在子进程中执行日志打印函数的话,这个时候就会发生上面的所说的情况。原创 2022-09-18 16:06:02 · 801 阅读 · 0 评论 -
minicom 使用教程
minicom使用直接运行sudo minicom -D /dev/ttyUSB0 -C minicom.log -b 38400 --color=on --attrib=on编写脚本来实现对多个设备的支持,不用自己敲命令。原创 2021-07-06 09:27:53 · 1571 阅读 · 0 评论 -
Linux socket 进程间通信
Socket进程间通信服务端#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/stat.h>#include <sys/socket.h>#include <sys/types.h>#include <sys/un.h>#include <errno.h>#include <stddef.h>原创 2021-07-04 03:28:29 · 1306 阅读 · 0 评论