应用编程
文章平均质量分 69
slicesss
自然规律,功能与物质的平衡
展开
-
linux应用程序控制底层硬件原理解析
想要理解一个东西的本质,就要站在很高的层次上,去看清整体,明白整体是怎么回事,具体的细节可以不知道,可以不会写这个代码,不明白代码功能是怎么实现的,但必须从宏观的角度知道,这个东西大概是怎么回事原创 2021-08-08 15:21:52 · 1977 阅读 · 12 评论 -
应用编程-线程 编程实践
进程的劣势1. 进程间切换的时间开销大2. 进程间通讯效率低进程与线程的关系一个进程可以有多个进程,内核调度的最小单元是线程,多线程之间的具有高的通讯效率默认进程下的线程创造#include <pthread.h>pthread_t th = -1;void *func(void *arg){ //代码段}ret = pthread_create(&th, NULL, func, NULL);gcc时要加 -lp原创 2021-04-04 22:12:22 · 134 阅读 · 0 评论 -
应用编程-进程信号处理
常见信号介绍SIGINT2Ctrl+C时OS送给前台进程组中每个进程SIGABRT6调用abort函数,进程异常终止SIGPOLL SIGIO8指示一个异步IO事件,在高级IO中提及SIGKILL9杀死进程的终极办法SIGSEGV11无效存储访问时OS发出该信号SIGPIPE13涉及管道和socketSIGALARM14涉及alarm函数的实现SIGTERM15kill命令发送的OS默认终止信号SIGCHLD17原创 2021-04-02 12:52:44 · 2248 阅读 · 6 评论 -
应用编程-高级IO
文件描述符修改为非阻塞式flag = fcntl(0, F_GETFL); // 先获取原来的flagflag |= O_NONBLOCK; // 添加非阻塞属性fcntl(0, F_SETFL, flag); // 更新flag多路复用->select函数 poll函数int main(void){ fd_set myset; struct timeval tm; fd = open("/dev/input/mouse1", O_RDONLY); FD_ZERO(原创 2021-04-02 16:30:55 · 143 阅读 · 0 评论 -
应用编程-文件属性获取
linux中各种文件类型普通文件文本文件,二进制文件文本文件文件中的内容是由文本构成的,文本指的是ASCII码字符。文件里的内容本质上都是数字(不管什么文件内容本质上都是数字,因为计算机中本身就只有1和0),而文本文件中的数字本身应该被理解为这个数字对应的ASCII码。常见的.c文件, .h文件 .txt文件等都是文本文件。文本文件的好处就是可以被人轻松读懂和编写。所以说文本文件天生就是为人类发明的。二进制文件二进制文件中存储的本质上也是数字,只不过这些数字并不是文字的原创 2021-04-01 11:22:40 · 190 阅读 · 1 评论 -
应用编程-时间与proc系统
时间相关API实战timetime能得到一个当前时间距离标准起点时间1970-01-01 00:00:00 +0000(UTC)过去了多少秒time_t tNow = -1;time(&tNow);printf("time: %ld.\n", tNow);ctimectime可以从time_t出发得到一个容易观察的字符串格式的当前时间。)ctime好处是很简单好用,可以直接得到当前时间的字符串格式,直接打印来看。坏处是ctime的打印时间格式是固定的,没法按照我们的原创 2021-04-01 14:02:22 · 196 阅读 · 0 评论 -
应用编程-进程全解
程序的开始和结束main函数由谁调用编译链接时的引导代码。操作系统下的应用程序其实在main执行前也需要先执行一段引导代码才能去执行main,我们写应用程序时不用考虑引导代码的问题,编译连接时(准确说是连接时)由链接器将编译器中事先准备好的引导代码给连接进去和我们的应用程序一起构成最终的可执行程序。运行时的加载器。加载器是操作系统中的程序,当我们去执行一个程序时(譬如./a.out,譬如代码中用exec族函数来运行)加载器负责将这个程序加载到内存中去执行这个程序。程序在编译连接时原创 2021-04-01 21:57:30 · 194 阅读 · 0 评论