- 博客(13)
- 收藏
- 关注
原创 UNIX环境编程基础
mycopy实例重写: #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main(int argc, char *argv[]) { int fsrc; int fdst;
2022-05-03 20:58:06
649
原创 linux常见指令
linux常用命令 ln:建立连接 df:查看磁盘空间 ps:查看进程状态 lsmod:内核模块列表 mkfs:磁盘格式化 insmod:加载内核模块 lsmod:内核模块列表 modprobe:内核模块管理工具 find:查找文件 grep:查找文件内容 sudo find / -amin -15 查找最近15分钟访问过的文件 sudo find / -atime -2 查找最近48小时访问过的文件 sudo find /-empty 查找空文件或者文件夹 sudo find /
2022-05-01 18:24:45
108
原创 linux串口操作
【串口操作方式】 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <termios.h> #include <errno.h> int main() { int fd;
2022-05-01 17:57:43
1319
原创 Socket套接字
Socket套接字 Socket常被翻译成套接字或者插口,Socket实际上是网络上的通信端点。 在使用Socket通信之前,需要创建socket对象,通常使用socket()函数创建socket()对象。 int socket(int domain, int type, int protocol); domain:指定使用的域,通常是ipv4,ipv6等;AF_INET表示IPv4协议。 type:指定数据传输的方式,SOCK_STREAM:面向连接的数据流方式,SOCK_DGRAM:无连接的数据报方式。
2022-05-01 17:53:40
972
原创 多线程开发
**线程:**线程是一种轻量级的进程,线程是操作系统调度的最小单位,可以理解为一个进程是一个或者多个线程组成的。Linux系统开发多线程程序大多使用pthread库,其操作函数基本都以pthread开头。 创建线程的函数定义如下: int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(start_routine)(void), void *restrict arg); thread
2022-05-01 17:38:55
502
原创 多进程开发
**进程:**Linux系统至少有一个进程,一个程序可以对应多个进程,一个进程只能对应一个程序。 由于历史原因,大多数UNIX系统的main()函数定义为: int main(int argc, char *argv[ ], char *envp[ ]); argc表示参数argv有多少个字符串,argv表示一个不定长的字符串数组,envp以name=value的形式存放了一组进程中会用到的环境变量。 环境变量: 读取环境变量:getenv(); 设定环境变量:putenv(); char *getenv(
2022-05-01 17:24:44
298
原创 内存管理和使用
**堆栈:**堆和栈只有在程序运行时才存在,一个计算机应用程序在内存中可以分为两个部分:代码段和数据段,代码段存放用户编写的代码,数据段可以分为堆和栈。 **BSS区:**存放未初始化变量,BSS存放的数据在开始执行之前被内核初始化为0或者空指针(NULL)。 gcc hello.c -o hello 显示结果如下: lwb@ubuntu:~$ size hello text data bss dec hex filename 1515 600 8 2
2022-05-01 17:02:08
375
原创 小端字节序下数据存储函数改写
STM32存储数据是小端字节序存储,标准库函数下会默认拷贝数据时由高地址向低地址拷贝,程序1为正序拷贝函数。 void mymemcpy(void *dst, void *src, int n) { char *pdst=(char *)dst; char *psrc=(char *)src+n-1; while(n--) { *pdst++=*psrc--; } } STM32存储数据是小端字节序存储,以下两个函数可以实现高低位的互换。 unsigned int myint
2021-09-03 16:37:26
92
原创 静态库和动态库
(一)静态库的创建及使用:(新建目录:mkdir static,在此目录下进行操作) 1 创建主函数和两个子函数,主函数内部将会调用子函数; 2 将两个子函数打包成静态库函数; 3 编译主函数时进行链接创建好的静态库; 详细步骤: 一 创建主函数和两个子函数 1 vi add.c int add(int a,int b) { return a+b; } 2 vi max.c int max(int a,int b) { return a>b?a:b; } 3 vi staticmain.c(主函数
2021-05-29 21:24:16
107
原创 树莓派引脚编程
(一)认识树莓派wiringPi库 1 wiringpi库:包含的API接口有GPIO控制口,中断,多线程等。 2 查看GPIO引脚编号表: 命令:gpio readall (二)使用wiringPi库对树莓派引脚编程 1 针对gpio7引脚的高低电平编程: 命令:vi gpio1.c #include <wiringPi.h> #include <stdio.h> int main() { int cmd; if(wiringPiSetup()==-1) //wiringPi
2021-05-29 20:56:42
319
原创 树莓派串口通信
一,树莓派串口通信准备步骤 1 利用xshell或者putty等软件进行网络连接树莓派 2 修改 cmdline.txt文件,解除串口被当做电脑与树莓派的交互界面,使得其可以进行数据交互发送。 命令: cd /boot/ sudo vim cmdline.txt 删除【】之间的部分: dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=
2021-05-29 20:38:13
552
原创 linux文件系统
文件系统:文件管理系统(是一个大的程序),简称文件系统。命令:ls fs 挂载点的意义:挂载是将文件系统和目录树结合在一起的操作,挂载点是个目录,且该目录是文件系统的入口。 inode: 索引节点,本质是结构体构成的数据结构,包含了与文件系统中各个文件相关的信息。 superblock: 记录filesystem的整体信息 block:记录档案内容。 inode:记录档案属性,同时记录档案中数据所在的block号码。 df命令:查看已挂载的文件系统。 /bin目录:记录了常用的命令:cat chgrp
2021-05-29 20:11:54
93
原创 linux文件操作
Linux的文件类型有7种: 普通文件:Regular file 目录文件:Directory file 块设备文件:Block special file 字符设备文件:Character special file 命名管道文件:FIFO 套接字文件:Socket 符号链接文件:Symbolic link 普通文件:分为文本文件和二进制文件,文本文件是字符文件,就是我们可以直接查看的文件,例如我们编写的C语言程序(vi filename即可直接查看)二进制文件表示的是信息在内存中的格式,例如C程序编译过后
2021-05-29 19:46:02
85
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人