linux
文章平均质量分 68
m0_59949484
这个作者很懒,什么都没留下…
展开
-
linux-C实现GPRS模块发送短信和打电话
GPRS是GSM的延续,与以往在顿道上采用电路交换的传输方式不同,GPRS是以数据包(Packet)的方式来传输的,使用者所负担的费用是以其传输的数据流量计算的,并非使用其整个频道,因此理论上较为便宜。举个例子,用户访问互联网时,单击一个超级链接,手机就在无线信道上发送和接收数据,主页下载到本地后,没有数据传送,手机就进入一种“准休眠”状态,手机释放所用的无线频道给其他用户使用,这时网络与用户之间还保持一种逻辑上的连接,当用户再次单击,手机立即向网络请求无线频道用来传送数据,而。原创 2023-08-13 22:34:33 · 587 阅读 · 0 评论 -
linux-安防监控实现之网页控制ZigBee和A9上的硬件LED灯蜂鸣器和风扇
A9上的硬件LED灯蜂鸣器和风扇。原创 2023-08-12 23:39:29 · 133 阅读 · 0 评论 -
linux-线程间同步互斥回顾
pthread_create之前的成为 全局资源 =====>当有线程操作全局资源的时候 ===>变为临界资源。2、条件变量+互斥锁 ===>broadcast signal。1、线程间同步 ==== 有序执行。2、线程间互斥 ==== "你死我活"同步和互斥是为了什么?原创 2023-08-12 22:38:57 · 40 阅读 · 0 评论 -
linux-安防监控实现之传感器真实数据上传到网页
首先将fsadc、fsbeeper、fsled、fsmpu6050驱动移植安装到a9,保证a9可以正常采集数据,原创 2023-08-12 21:51:42 · 107 阅读 · 0 评论 -
linux-安防监控实现之ZigBee-A9传感器数据采集与串口上传
通过本文的介绍,我们深入了解了Zigbee通信的概述、原理、常用芯片、开发流程、整体架构和提供了一个简单的代码实例。Zigbee通信技术在物联网领域扮演着重要的角色,它为低功耗、低数据速率和短距离通信提供了一种可靠的解决方案。本文将深入介绍Zigbee通信的概述、原理、常用芯片、开发流程、整体架构和提供一些代码实例,帮助读者更好地理解和应用Zigbee技术。开发者可以根据具体的应用需求,添加自定义的Zigbee功能和处理事件的代码。应用层:实现具体的应用功能,如传感器数据的采集和控制命令的发送等。原创 2023-08-12 16:45:39 · 401 阅读 · 0 评论 -
linux安防监控实现之mjpeg-streamer视频图像的显示
1、下载源码,在https://sourceforge.net/projects/mjpg-streamer/下载的源码(mjpg-streamer-code-182) 最新的版本使用以下命令下载,注: /home/linux/security-monitor/mjpg-streamer/video/jpegarm/lib就是上面移植jpeg库后生成的lib、include的目录 ,执行这个命令之后,查看你的~/security-monitor/mjpg-streamer/video/jpegarm。原创 2023-08-12 15:58:48 · 1279 阅读 · 0 评论 -
llinux-安防监控实现之html框架浅析及模拟环境信息刷新到网页
安防监控实现之HTML框架分析。学习网站: html css。可以花2-3天学习了解一下。原创 2023-08-12 14:20:41 · 53 阅读 · 0 评论 -
linux-安防项目网页发送数据模拟控制Ubuntu的LED灯
【代码】linux-安防项目网页发送数据模拟控制Ubuntu的LED灯。原创 2023-08-12 10:47:51 · 50 阅读 · 0 评论 -
linux-安防监控实现之CGI的移植及与html的通信
CGIC是一个支持CGI开发的开放源码的标准C库,可以免费使用,只需要在开发的站点和程序文档中有个公开声明即可,表明程序使用了CGIC库,用户也可以购买商业授权而无需公开声明。CGIC能够提供以下功能:1 分析数据,并自动校正一些有缺陷的浏览器发来的数据;2 透明接收用GET或 POST方法发来的From数据;3 能接受上传文件;4 能够设置和接收cookies;5 用一致的方式处理From元素里的回车;6 提供字符串,整数,浮点数,单选或多选功能来接收数据;原创 2023-08-11 19:02:46 · 172 阅读 · 0 评论 -
linux-安防监控实现之boa服务器移植
硬件资源:arm 开发板宿主机:ubuntu18.04工具:aarch64-linux-gnu-gcc。原创 2023-08-11 13:17:17 · 145 阅读 · 0 评论 -
linux交叉编译工具链问题总结
问题描述:环境变量已正确添加,但执行gcc可执行程序时,显示没有那个文件或目录。解决办法:在虚拟机上进行交叉编译工作。原创 2023-08-10 13:57:56 · 784 阅读 · 0 评论 -
Makefile解释
Makefile文件2。原创 2023-08-09 21:31:12 · 28 阅读 · 0 评论 -
linux-安防监控之软硬件环境分析和通信结构体定义
【代码】linux-安防监控之软硬件环境分析和通信结构体定义。原创 2023-08-10 16:40:28 · 58 阅读 · 0 评论 -
linux编程安防监控项目
SecureCRT串口配置:putty xshell。好,到这里咱们基本的环境配置就OK了。2.4.5 本地回环可能遇到的问题。2.4.3 重启tftp服务器。2.4.1 修改配置文件。2.4.4 本地回环测试。原创 2023-08-09 13:19:28 · 122 阅读 · 0 评论 -
linux应用开发-在线词典项目
服务器端将用户信息和历史记录保存在数据库中。客户端输入用户名和密码,服务器端在数据库中查找、匹配,返回结果。根据客户端输入的单词在字典文件中搜索。分析服务器端和客户端流程。定义数据库中表的结构。原创 2023-08-08 19:11:40 · 117 阅读 · 0 评论 -
linux-数据库开发之Sqlite3
1, 数据库的安装2, 数据库命令:1)系统命令 , 都以'.'开头.exit.quit.table 查看表.schema 查看表的结构2)sql语句, 都以‘;原创 2023-08-07 22:33:47 · 114 阅读 · 0 评论 -
linux网络编程-广播、多播、套接字
前面介绍的数据包发送方式只有一个接受方,称为单播如果同时发给局域网中的所有主机,称为广播只有用户数据报(使用UDP协议)套接字才能广播以192.168.1.0 (255.255.255.0) 网段为例,最大的主机地址192.168.1.255代表该网段的广播地址发到该地址的数据包被所有的主机接收255.255.255.255在所有网段中都代表广播地址创建用户数据报套接字缺省创建的套接字不允许广播数据包,需要设置属性setsockopt可以设置套接字属性接收方地址指定为广播地址指定端口信息原创 2023-08-07 18:16:55 · 292 阅读 · 0 评论 -
linux网络编程-网络分析测试工具、封包、IP和TCP头
IPv4 中使用 gethostbyname() 函数完成主机名到地址解析,这个函数仅仅支持 IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储 IPv4 地址的空间。IPv6 中引入了 getaddrinfo()的新 API,它是协议无关的,既可用于 IPv4 也可用于 IPv6。gethostbyname() 根据主机名取得主机信息 endhostent()optname指定控制的方式(选项的名称),我们下面详细解释。3. SYN,,ACK, FIN 等标志符号应该写上|原创 2023-08-07 15:58:53 · 174 阅读 · 0 评论 -
linux网络编程-多路IO复用
阻塞I/O: 最常用非阻塞I/O: 可防止进程阻塞在I/O操作上,需要轮询I/O 多路复用: 允许同时对多个I/O进行控制信号驱动I/O:一种异步通信模型。原创 2023-08-07 13:35:46 · 37 阅读 · 0 评论 -
llinux网络编程-UDP编程
接收数据:`recvfrom()`函数用于从套接字接收数据。- 获取发送方地址:`recvfrom()`函数还可以获取发送方的地址信息。使用`recvfrom()`函数可以实现对套接字的数据接收操作,并获取发送方的地址信息,适用于网络通信中需要接收数据并处理的场景。函数`recvfrom()`用于从一个已连接或未连接的套接字接收数据,并将数据存储到指定的缓冲区中。- `addrlen`:发送方地址缓冲区的大小,接收后会被修改为实际地址大小。- `src_addr`:发送方地址的缓冲区指针。原创 2023-08-06 18:51:25 · 57 阅读 · 0 评论 -
llinux网络编程-并发服务器(多进程)
每个连接都会创建一个新的线程,这些线程共享相同的内存空间,可以直接访问共享的数据。- 多进程并发服务器:使用多个独立的进程来处理并发连接请求。每个连接都会创建一个新的进程,这些进程之间是相互独立的,通过进程间通信来传递数据。总的来说,多进程并发服务器适用于计算密集型任务和对异常处理要求较高的场景,而多线程并发服务器适用于连接密集型任务和对资源利用效率要求较高的场景。- 对于异常处理要求较高的场景,一个进程的崩溃不会影响到其他连接的处理。- 对于资源的高效利用要求较高的场景,线程的创建和销毁开销相对较小。原创 2023-08-06 13:03:42 · 42 阅读 · 0 评论 -
llinux网络编程-并发服务器(多线程)
【代码】llinux网络编程-并发服务器(多线程)原创 2023-08-06 12:30:34 · 43 阅读 · 0 评论 -
llinux网络编程-网络编程API函数
如果是IPV6的编程,要使用struct sockddr_in6结构体(详细情况请参考man 7 ipv6),通常更通用的方法可以通过struct sockaddr_storage来编程。sockfd: 经过前面socket()创建并通过bind(),listen()设置过的fd。addr: struct sockaddr的结构体变量的地址。sockfd: 通过socket()函数拿到的fd。sockfd: 通过socket()函数拿到的fd。sockfd: 通过socket()函数拿到的fd。原创 2023-08-05 21:13:27 · 38 阅读 · 0 评论 -
llinux网络编程-网络编程的预备知识、TCP网络编程
提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。cp: 点分形式的IP地址,结果是32位整数(内部包含了字节序的转换,默认是网络字节序的模式)mobileIPV6: local IP(本地注册的IP),roam IP(漫游IP)局域网IP: 192.XXX.XXX.XXX 10.XXX.XXX.XXX。组播IP: 224.XXX.XXX.XXX~239.xxx.xxx.xxx。原创 2023-08-05 18:56:44 · 28 阅读 · 0 评论 -
llinux网络编程-网络发展历史和分层、TCP/UDP特点
Internet—“冷战”的产物1957 年 10 月和 11 月,前苏联先后有两颗“Sputnik”卫星上天1958 年美国总统艾森豪威尔向美国国会提出建立 DARPA (Defense Advanced Research Project Agency),即国防部高级研究计划署,简称 ARPA。原创 2023-08-05 18:17:25 · 35 阅读 · 0 评论 -
进程、线程和进程间通信-信号集、信号的阻塞
有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数。信号递达(Delivery ):实际信号执行的处理过程(3种状态:忽略,执行默认动作,捕获)信号的阻塞概念:信号的”阻塞“是一个开关动作,指的是阻止信号被处理,但不是阻止信号产生。功能:将进程的屏蔽字替换为由参数sigmask给出的信号集,然后挂起进程的执行。1如果信号的默认处理动作是终止进程,则进程终止,pause函数么有机会返回。原创 2023-08-05 16:46:35 · 59 阅读 · 0 评论 -
进程、线程和进程间通信-信号捕捉
ITIMER_PROF:进程在用户模式(即程序执行时)和核心模式(即进程调度用时)均计算时间。ITIMER_PROF:进程在用户模式(即程序执行时)和核心模式(即进程调度用时)均计算时间。SIG_IGN 代表忽略信号;SA_SIGINFO:使用 sa_sigaction 成员而不是 sa_handler 作为信号处理函数。sa_sigaction: 另一个信号处理函数,它有三个参数,可以获得关于信号的更详细的信息。SA_NODEFER:使对信号的屏蔽无效,即在信号处理函数执行期间仍能发出这个信号。原创 2023-08-05 11:52:49 · 60 阅读 · 0 评论 -
进程、线程和进程间通信-信号
信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式 linux内核通过信号通知用户进程,不同的信号类型代表不同的事件Linux对早期的unix信号机制进行了扩展。原创 2023-08-05 10:12:42 · 36 阅读 · 0 评论 -
进程、线程和进程间通信-内存映射
功能:创建共享内存映射函数返回值:成功返回创建的映射区首地址,失败返回MAP_FAILED( ((void *) -1) ),设置errno值参数说明:addr:指定要映射的内存地址,一般设置为 NULL 让操作系统自动选择合适的内存地址。length:必须>0。映射地址空间的字节数,它从被映射文件开头 offset 个字节开始算起。prot:指定共享内存的访问权限。原创 2023-08-05 01:05:33 · 75 阅读 · 0 评论 -
进程、线程和进程间通信-进程间通讯
对于以只写方式(O_WRONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_WRONLY),open调用将被阻塞,直到有一个进程以只读方式打开同一个FIFO文件为止;如果open调用是非阻塞的(即第二个参数为O_WRONLY | O_NONBLOCK),open总会立即返回,但如果没有其他进程以只读方式打开同一个FIFO文件,open调用将返回-1,并且FIFO也不会被打开。成功时返回0,失败时返回EOF path 创建的管道文件路径 mode 管道文件的权限,如0666。原创 2023-08-04 23:33:23 · 37 阅读 · 0 评论 -
进程、线程和进程间通信-线程池概念和实现
我们平时创建一个线程,完成某一个任务,等待线程的退出。但当需要创建大量的线程时,假设。编译的时候不加-g,无法通过行号打断点,gdb调试会报没有符号表被读取。2 线程池工作线程,它是任务队列任务的消费者,等待新任务的信号。通俗的讲就是一个线程的池子,可以循环的完成任务的一组线程集合。1 任务队列,存储需要处理的任务,由工作线程来处理这些任务。,使用线程池可以降低频繁创建和销毁线程所带来的开销,on:其他线程会暂停。任务处理时间比较短的时候这个好处非常显著。解决:检查函数的参数,添加对应的参数。原创 2023-08-04 22:10:59 · 36 阅读 · 0 评论 -
进程、线程和进程间通信-线程-条件变量
在某些情况下,头部指针是必需的,因为它用于指向链表的起始位置,方便对整个链表的操作。例如,在双向链表中,头部指针通常用于指向链表的第一个节点,这样可以方便地在头部插入新节点。例如,如果只需要对链表进行顺序访问,不需要在头部插入或删除节点,那么不使用头部指针也是可行的。2 如果pthread_cond_signal或者pthread_cond_broadcast 早于 pthread_cond_wait ,则有可能会丢失信号。链表不一定需要头部指针,具体是否需要头部指针取决于链表的设计和使用场景。原创 2023-08-04 20:49:03 · 42 阅读 · 0 评论 -
进程、线程和进程间通信-线程互斥
临界资源一次只允许一个任务(进程、线程)访问的共享资源临界区 访问临界资源的代码互斥机制 mutex互斥锁 任务访问临界资源前申请锁,访问完后释放锁。原创 2023-08-04 18:45:59 · 49 阅读 · 0 评论 -
进程、线程和进程间通信-线程取消
意义:随时杀掉一个线程注意:线程的取消要有取消点才可以,不是说取消就取消,线程的取消点主要是阻塞的系统调用杀死一个线程运行段错误调试:可以使用gdb调试使用gdb 运行代码,gdb ./youapp(gdb) run等待出现Thread 1 "pcancel" received signal SIGSEGV, Segmentation fault.输入命令bt(打印调用栈)(gdb) bt确定段错误位置是pcancel.c21行如果没有取消点,手动设置一个。原创 2023-08-04 15:11:53 · 28 阅读 · 0 评论 -
进程、线程和进程间通信-线程回收
查看运行线程命令ps -eLf|grep ***(线程名称)对于一个默认属性的线程 A 来说,线程占用的资源并不会因为执行结束而得到释放成功返回0,失败时返回错误码thread 要回收的线程对象调用线程阻塞直到thread结束*retval 接收线程thread的返回值注意:pthread_join 是阻塞函数,如果回收的线程没有结束,则一直等待编译错误:错误类型:未知的类型pthead_t错误可能:1拼写错误,2对应的头文件没有包含。原创 2023-08-04 10:32:56 · 35 阅读 · 0 评论 -
进程、线程和进程间通信-线程
进程有独立的地址空间Linux为每个进程创建task_struct每个进程都参与内核调度,互不影响。原创 2023-08-04 10:32:33 · 37 阅读 · 0 评论 -
进程、线程和进程间通信-守护进程
由于在 Linux 中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。参数a表示不仅列当前用户的进程,也列出所有其他用户的进程,参数x表示不仅列有控制终端的进程,也列出所有无控制终端的进程,参数j表示列出与作业控制相关的信息。进程组(Process Group): 进程集合,每个进程组有一个组长(Leader),其进程 ID 就是该进程组 ID。成功:返回调用进程的会话ID;原创 2023-08-04 10:32:16 · 37 阅读 · 0 评论 -
进程、线程和进程间通信-进程基础2
背景:fork创建进程之后,子进程和父进程执行相同的代码,但是在实际开发当中,我们希望父子进程执行不同的代码。作用:执行指定的程序进程调用exec函数族执行某个程序进程当前内容被指定的程序替换实现让父子进程执行不同的程序父进程创建子进程子进程调用exec函数族 父进程不受影响。原创 2023-08-03 19:29:16 · 28 阅读 · 0 评论 -
进程、线程和进程间通信-进程基础
需要注意的是,`exit()`函数会立即终止程序的执行,不会执行后续的代码,包括`main()`函数中的`return`语句。pid>0时,只等待进程ID等于pid的子进程,不管其它已经有多少子进程运行结束退出了,只要指定的子进程还没有结束,waitpid就会一直等下去。pid=0时,等待同一个进程组中的任何子进程,如果子进程已经加入了别的进程组,waitpid不会对它做任何理睬。pid<-1时,等待一个指定进程组中的任何子进程,这个进程组的ID等于pid的绝对值。函数的返回值是被等待的子进程的进程ID。原创 2023-08-03 18:57:22 · 33 阅读 · 0 评论 -
文件IO-库
或者使用export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你的动态库目录。添加/etc/ld.so.conf.d/*.conf文件,执行ldconfig刷新。Windows和Linux下库文件的格式不兼容 Linux下包含静态库和共享库。1 . 编写库文件代码,编译为.o 目标文件。gcc -o 目标文件 源码.c -L路径 -lxxxx。gcc -o 目标文件 源码.c -L路径 -lxxxx。编译test.c 并链接共享库libcommon.so。原创 2023-08-03 16:44:38 · 29 阅读 · 0 评论