- 博客(34)
- 资源 (2)
- 收藏
- 关注
原创 Linux进程编程(8)exce族函数的使用
exec系列函数用于在当前进程上下文中加载并执行一个新的程序。换句话说,exec会替换当前进程的代码、数据段和堆栈等信息为新程序的相应部分,然后执行新程序。这个过程中,进程的 PID 不会改变,但是几乎所有其他的内容都会被新程序替换。这些示例覆盖了 exec 系列函数中的主要变体,每种变体都有其特定用途和优势。例如,execl 和 execle 允许你直接在函数调用中指定参数,而 execv 和 execvp 允许你通过数组传递参数,这在参数数量未知时非常有用。
2023-09-08 15:56:38 235 1
原创 Linux :FTP服务器(第二版)
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。
2023-09-08 15:30:04 102
原创 Linux :FTP服务器(第一版)
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。
2023-09-08 00:57:08 109
原创 【基于香橙派orangepi zero 2 的Linux的智能垃圾桶项目】
本项目的代码比较凌乱,也是本人暂时没有时间优化,但是是可以正常使用的,注释也比较少,阅读有些许困难,请见谅,待本人时间充裕了再去做优化和注释。
2023-09-05 13:20:17 179
原创 【Linux使用libcurl库进行Http请求】
这种技术主要用于网络编程,特别是用于进行HTTP请求。在这个具体的例子中,使用的是C语言与libcurl库。libcurl是一个开放源码的客户端URL传输库,它支持多种协议,如HTTP、FTP、SMTP等。libcurl提供了一组API函数,使得程序能够与服务器进行各种类型的数据交换和通信。在这个程序中,libcurl用于执行HTTP GET和POST请求,获取或发送数据。总结一下,这种技术通常被称为HTTP客户端编程,或更具体地,使用C语言和libcurl进行HTTP客户端编程。
2023-09-04 23:41:11 357
原创 system函数与popen函数的介绍与使用
fgets是C语言中用于从文件或流中读取字符串的函数。函数原型参数str: 指向一个字符数组的指针,该数组用于存储从stream中读取的字符串。n: 要读取的最大字符数(包括最后的空字符)。通常,这是字符数组的大小。stream: 要读取的输入流,例如stdin(标准输入)或一个文件指针。返回值如果成功,函数返回相同的str参数。如果到达文件末尾或发生读取错误,函数返回NULL。注意事项读取的字符串会包括换行符(如果有)。读取的字符串在n-1。
2023-08-15 00:21:46 449
原创 Linux网络编程
物理层:涉及到物理连接、电压、时钟频率等。数据链路层:帧的发送和接收,以及MAC地址。网络层:处理数据包和IP地址,负责数据包的路由。传输层:为应用层提供端对端的通信服务。主要协议有TCP和UDP。会话层:建立、维护和结束会话。表示层:确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。应用层:面向用户的网络服务。当然可以。下面我将按照步骤描述服务器和客户端代码的逻辑。
2023-08-13 19:29:20 74
原创 Linux进程编程(7)信号携带信息
我们讨论了关于在Linux中使用信号进行进程间通信的主题。信号是一种进程之间进行异步通信的方式,用于通知目标进程发生了某个事件。我们探讨了如何发送和接收信号,以及如何在信号处理函数中使用siginfo_t结构体来获取附加的信号信息。信号是异步通信的一种形式,用于通知进程某个事件的发生。信号可以由内核、其他进程、或进程本身发出。使用kill函数或sigqueue函数可以向目标进程发送信号。使用sigaction函数设置信号处理函数,以便在接收到信号时执行特定操作。
2023-08-12 00:54:25 59
原创 Linux进程编程(6)信号量编程
信号和信号量是操作系统中用于进程间通信和同步的两个概念。信号是操作系统用于通知进程发生了某个事件或条件的机制。它是一种异步通信方式,一个进程可以发送一个信号给另一个进程,后者在接收到信号后可以采取相应的操作。常见的信号包括SIGINT(Ctrl+C中断信号)、SIGTERM(终止信号)、SIGUSR1(用户定义信号1)等。信号的处理可以由进程预先设置,通常是通过注册信号处理函数来处理不同的信号。信号量是一种用于同步多个进程访问共享资源的机制。信号量可以被看作是一个计数器,它可以被多个进程同时访问和操作。
2023-08-09 17:34:45 91
原创 Linux进程编程(5)消息队列
消息队列是一种进程间通信机制,允许不同进程之间通过传递消息来进行数据交换。定义用于消息传递的结构体,通常包括消息类型和消息内容字段。使用ftok函数生成用于标识消息队列的键值。使用msgget函数创建或获取消息队列,得到消息队列标识符。使用msgsnd函数将消息发送到消息队列,需要指定消息队列标识符、消息结构体、消息大小和标志。使用msgrcv函数从消息队列中接收消息,需要指定消息队列标识符、消息结构体、消息大小、消息类型和标志。对于消息队列相关函数,要检查返回值,处理可能的错误情况,如创建失败或接收失败。
2023-08-04 23:20:47 89
原创 Linux进程编程(4)共享内存
共享内存是进程间高效通信的一种方式,适用于需要大量数据传输、实时通信和资源共享的场景。在代码中,通过共享内存,父子进程可以共享数据,通过控制函数和适当的顺序,实现了数据的交换和处理。注意要小心处理同步和互斥,以避免数据竞争等问题。
2023-08-04 16:15:03 118
原创 Linux进程编程(3)进程间管道通信之有名管道
有名管道(Named Pipe)是一种进程间通信机制,用于在不相关的进程之间传递数据。与无名管道(Anonymous Pipe)不同,有名管道在文件系统中有一个名称,并且可以被多个进程共同访问。持久性: 有名管道在文件系统中有一个路径和名称,因此它们在进程退出后仍然存在,其他进程可以在之后重新打开和使用它们。多进程访问: 多个进程可以同时通过有名管道进行通信。这些进程可以是不相关的,可以是同一用户的不同程序,也可以是不同用户的程序。半双工通信: 有名管道是半双工的,这意味着它们只能在一个方向上传递数据。
2023-08-02 17:21:08 121
原创 Linux进程编程(2)进程间管道通信之无名管道
管道(Pipe)是一种用于进程间通信的机制,在Unix和类Unix系统中广泛使用。它允许一个进程将数据写入到管道中,而另一个进程则可以从管道中读取这些数据。管道通常用于在父进程和子进程之间传递数据。管道有两种类型:有名管道(Named Pipe)和无名管道(Unnamed Pipe)。在这里,我们主要讨论无名管道,因为在本篇文章中使用的就是无名管道。无名管道是一种匿名的、单向的通信通道。它只能在有亲缘关系(父子关系)的进程之间使用,因为无名管道在创建时并没有名字,只存在于相应的进程内部。
2023-08-01 22:50:13 272 1
原创 Linux进程编程(1)【进程的创建与控制】
进程就是一个程序的执行实例,也就是正在执行的程序。在操作系统的眼里,进程就是一个担当分配系统资源CPU时间、内存的实体。
2023-07-31 22:32:27 35 1
原创 Linux线程编程(4)【线程条件】
在之前提供的示例代码中,生产者和消费者是两个不同的线程函数,它们分别用于生产数据和消费数据,模拟生产者-消费者问题。生产者函数:// 生产数据并放入缓冲区 // ... // 通知消费者可以消费了 // ... return NULL;在生产者函数中,线程会循环执行,生产一系列数据并放入共享缓冲区。在生产数据之前,生产者线程会对互斥锁进行上锁,以确保在生产数据时其他线程无法访问共享缓冲区。如果缓冲区已满(即),生产者线程会调用函数等待条件变量cond_full条件满足(即缓冲区不满)的通知。
2023-07-29 20:12:33 50 1
原创 Linux线程编程(3)【互斥锁】
互斥锁(Mutex,全称Mutual Exclusion)是一种并发编程中常用的同步机制,用于保护共享资源的访问,以避免多个线程同时访问共享资源而导致的数据竞争和不确定的结果。互斥锁的主要目的是确保在任意时刻只有一个线程可以获取锁,并进入临界区(修改共享资源)。其他线程在尝试获取该锁时会被阻塞,直到持有锁的线程释放锁为止。这样,通过对共享资源的访问进行串行化,就可以避免并发访问带来的问题。互斥锁通常有两个状态:锁定(locked)和未锁定(unlocked)。
2023-07-29 14:10:25 83 1
原创 【C语言实现Linux cp命令】
实现Linux cp命令cp指令是用于复制文件或目录的指令,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。
2023-07-22 18:10:00 232
原创 【stm32+ESP01s连接到阿里云物联网飞燕平台】
这次的之所以再次写关于连接到云平台的文章是因为学校的课设,所以只能再次掏出了这份年久失修的代码了。
2023-06-27 23:05:41 1249 2
原创 数组指针和指针数组
能不能定义一个指针,让指针偏移的时候,也偏移对应大小的数组?数组指针:定义一个指针,指向数组。数组指针:真正等同于二维数组名。指针数组:存放地址的数组函数指针数组!本质上是一个数组。
2023-02-23 13:35:42 40
原创 stm32+ESP01s连接到腾讯云物联网开发平台IOT
接上一篇文章测试接入腾讯云物联网开发平台本文章将使用stm32f103c8t6+esp01s接入腾讯云物联网开发平台提醒一下:esp01s建议去安信可官网购买MQTT和AT的那款,如果只有AT的话,就需要自己重新烧录了。这样就能成功实现用腾讯连连小程序控制stm32的灯的亮灭了。......
2022-08-13 05:28:34 5998 8
stm32与esp01s接入腾讯云物联网开发平台,并用腾讯连连控制stm32开发板上的LED灯的亮灭
2022-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人