linux系统编程
酸菜鱼的鱼
Linux rtos 驱动应用开发 本博客主要用于工作学习的总结和备份,欢迎大家留言评论交流,谢谢
展开
-
linux系统设置系统时间的方法
Linux系统设置系统时间有两种方法:1.使用命令date2.使用系统调用settimeofday,gettimeofday注意:不管使用上面哪一种方法都必须是root权限。如果系统连接上了网络,设置的时间和网络时间不同,系统会自动使用网络中的时间。1.使用命令date在命令行中可以使用:sudo date --s "2020-6-30 10:10:10"2.使用系统调用settimeofday#include <stdio.h>#inclu原创 2020-06-30 20:19:52 · 8678 阅读 · 0 评论 -
Linux系统中段错误信号sigsegv的捕获和调试使用
本文介绍了在Linux系统中通过捕获信号sigsegv信号debug segmentation fault的方法。要在程序的执行过程中能捕获段错误发出的信号sigsegv,需要在程序的开始的时候注册信号的处理函数signal(SIGSEGV, sigsegv_handler);并且在信号的处理函数sigsegv_handler中需要调用系统调用backtrace和bacetrace_symbols打印出回溯信息。接下来还需要通过objdump 的命令将程序反汇编成一个.s的汇编文件。然后根据回溯信息和汇翻译 2020-06-20 10:42:38 · 5891 阅读 · 2 评论 -
Linux应用层对串口的使用操作
在Linux中串口作为字符设备,设备节点在/dev/目录下,使用普通的open,close,write和read等系统调用即可使用。这其中会涉及到一些串口的基本属性的设置,如:波特率,奇偶校验,停止位,数据位以及有无流控等。一些特殊的系统调用和数据结构会被使用。参考:https://blog.csdn.net/u013485792/article/details/51006790下面是一个简单的示例:#include <stdio.h>#include <str..转载 2020-06-07 10:32:32 · 1219 阅读 · 0 评论 -
open FIFO for write returns “No such device or address”
https://stackoverflow.com/questions/43402013/open-fifo-for-write-returns-no-such-device-or-address这个回答是说,打开一个fifo文件的时候,如果open设置为非阻塞只写的情况下,读端如果还没有打开的情况下,写端就会返回失败。所以在open一个fifo文件的时候,最好是设置为阻塞状态。这样ope...翻译 2020-03-04 22:08:31 · 1463 阅读 · 0 评论 -
Linux应用层基于v4l2框架的摄像头信息查询的工具
先有一个USB摄像头,当插上以Linux为系统的树莓派上时,在/dev目录下是有相应的驱动设备文件了的:这时候会有些想法获取一些摄像头的基本参数啥的。根据v4l2架构提供的接口现写一个固然可行,但感觉有点浪费时间。现在笔者写了一个简单的程序,一共大家参考。本程序能够查询的内容:camera的能力,帧率,视频流格式,帧格式。希望各位读者能够提出更多的可以查询的内容以及方法。使用如下:...原创 2019-12-27 19:52:44 · 603 阅读 · 0 评论 -
Linux中tcp服务器检测客户端断开连接的方法
现在是在一个树莓派上执行编写好的tcp服务器的程序,一旦有客户端连接上来,服务器就会不断的向客户端发送类似于心跳包的数据。现在的需求是,当客户端软件关闭,服务器不需要从新启动服务器上的tcp进程。涉及到的主要是客户端断开连接后,服务器端继续send时,进程会退出,这是会涉及到信号SIGPIPE的知识,以及使用send中的最后参数或者sigaction的方法,避免进程被杀死。根据...原创 2019-12-20 19:22:16 · 4389 阅读 · 0 评论 -
Linux线程创建时参数传递的一些注意
最近在Linux平台下编程的时候,涉及到多线程的使用,在创建线程的时候少不了需要向线程中传递一些参数。Linux中的线程创建函数:intpthread_create(pthread_t*tidp,constpthread_attr_t*attr, (void*)(*start_rtn)(void*),void*arg);第四个参数void *arg就是创建线程的时候需要...原创 2019-12-10 19:07:44 · 1417 阅读 · 0 评论 -
Linux中的tcp udp的send、recv、sendto和recvfrom接口
参考:https://blog.csdn.net/u014507230/article/details/45311033send() 和recv()系统调用send()的用法如下:int send(int sockfd, const void* msg, int len, int flags);第一个参数是你希望给发送数据的套接口文件描述符。它可以是你通过socket()系统调用返回...转载 2019-09-10 19:23:32 · 1415 阅读 · 0 评论 -
Linux中C语言执行shell脚本的方法
主要是exec函数簇和system函数,其中需要注意的是,exec函数簇的函数执行成功后是无返回的,一般需要和fork()函数同时使用。在使用时需要另外的fork一个进程。exec函数簇:函数原型:#include <unistd.h>extern char **environ;int execl(const char *path, const char *ar...原创 2019-01-02 20:23:48 · 19130 阅读 · 0 评论 -
C语言实现判断一个字符串是否为回文:
判断一个字符串是否为回文: #include <stdio.h> #include <string.h> static int isCycStr(const char *str) { int strLen = 0, i = 0; strLen = strlen(str); for(i = 0; i < strLen/...原创 2019-01-05 17:24:25 · 2842 阅读 · 0 评论 -
Linux中查找目录下的以固定字符串开头的文件
每次需要开机检查系统的升级固件版本和当前的SD卡中的固件版本是否一致,固件名的开始是固定的字符串加上版本号。 #include <dirent.h> #include <sys/types.h static void *update_firmware(void *arg) { char acCurVersion[10] = {0}; char ...原创 2019-01-10 20:14:58 · 9416 阅读 · 0 评论 -
rv1108 SDK中wifi_management_start()函数中的代码梳理
WiFimanagement——start的函数的代码梳理:原创 2018-12-11 16:35:52 · 516 阅读 · 0 评论 -
通过头文件 time.h中的接口获取系统当前时间的方法
#include <time.h> 82 struct tm *t; 83 time_t tt; 84 time_t ts; 85 86 struct tm tr = {0}; 87 88 time(&tt); 89 t = localtime(&tt); 9...原创 2018-09-19 16:14:34 · 2406 阅读 · 0 评论 -
select函数的使用
函数原型:#include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select(int maxfdpl + 1, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *tvptr);功能...原创 2018-10-02 12:19:31 · 355 阅读 · 0 评论 -
Linux中读出本地设备的IP地址方法
可以读出本地设备的IP地址,主要是结构体struct ifreq的成员了解,和ioctl的使用。下面是具体的代码片段:#include <net/if.h>#include <net/if_arp.h>#include <sys/ioctl.h>static int GetLocalIp(char *pcLocalIp){ in...原创 2018-10-09 19:22:59 · 819 阅读 · 0 评论 -
打印文件中前n个逗号的内容
由于工作需要,需要在一行数百行的数字中,每个数字使用逗号‘,’分隔开,如下,寻找第n个数字,并将其改成其他的值。写了一个如下的小程序。如果你有更好的方法,欢迎留言评论额。47, 124, 137, 0, 237, 217, 104, 119, 88, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 214, 159, 220, 168, 24, 23, 170, 144,...原创 2018-11-20 19:37:31 · 196 阅读 · 0 评论 -
以Linux操作系统终端使用tcp连接Java编写的pc上位机的通信问题
在第一次调用send 后pc能够顺利接收到数据,第二次调用send后pc不能接收数据。解决方法,第二次发送重新调用socket系统调用,connect和上位机重新建立tcp的连接,发送数据。可以发送成功...原创 2018-11-24 18:12:36 · 685 阅读 · 0 评论 -
C语言读取不到文件的结束标志EOF的解决方法
使用C语言判断一个文件的行数:用到如下的代码,发现读到最后一行就会出现死循环,一直读不到文件的EOF标志,将getc函数的返回值类型改为int类型(也就是将下面的第4行中的char改为int即可),就可以顺利的判断EOF的标志了。查阅资料得知,EOF为整型,不是字符型。static int testFunCalTotalLine(void){ FILE *pf = NULL;...原创 2018-11-26 18:56:20 · 6293 阅读 · 0 评论 -
C++实现读取文件的指定行数的方法
相关的理论基础,可以参考这个博客的内容:https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html#include <fstream>#include <iostream>#include <map>using namespace std;using std::map;map<in...原创 2018-11-28 19:44:28 · 5312 阅读 · 0 评论 -
linux中设置串口的系统调用tcgetattr,tcsetattr,tcflush的使用总结
头文件:#include <termios.h>函数原型:int tcsetattr(int fd, int optional_actions, const struct termios *termios_p);//设置串口属性int tcgetattr(int fd, struct termios *termios_p);//获得串口属性int tcflush(int ...原创 2018-12-05 11:11:54 · 3752 阅读 · 0 评论 -
销毁一个链表的函数
销毁一个链表:static void destoryList(struct type_node *l){ struct type_node *next; struct type_node *p = l; if (NULL == p) return; while (p != NULL) { next = p->next...原创 2018-12-10 19:36:34 · 3553 阅读 · 1 评论