自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 系统编程七

这一节主要是讲有名管道有名管道的特点是它保证了写入原子性,而且可用于无亲缘关系的任意进程,它是创建在某个路径下,所以当进程退出时它也不会消失,而无名管道是创建在内存中,所以进程退出时候它就消失了。进程利用有名管道通信需要用到双线程,一个线程用于读,一个线程用于写。下图是有名管道与无名管道的区别:程序://写进程#define FIFONAME "myfifo"#de

2017-05-16 11:10:49 212

原创 系统编程六

主要是讲进程之间的通信传统的进程间通信:无名管道(pipe) 有名管道(fifo) 信号(signal)System v ipc对象:共享内存 消息队列 信号量 POSIX信号量(无名、有名)BSD:套接字(主机与主机之间)管道有三种:无名管道(pipe) 、有名管道(fifo) 、套接字无名管道:用于一对一,而且要亲缘关系,而且数据量少。P1进程把数据通过管道

2017-05-15 23:50:51 198

原创 系统编程五

对话期:用secucrt软件远程登录一个用户的时候,就是创建了一个对话期(session)。对话期和进程组都是为了方便给进程发信号而存在的。./test 是在前台进程组运行./test &是在后台进程组运行精灵进程是就算关闭终端了,它还在运行。。只要主机不断电。他是在一个独立的空间默默的运行。下面说一下创建精灵进程的步骤:最先运行在前台组的程序是

2017-05-15 22:37:22 216

原创 系统编程四

exec函数以及wait函数(1)exec实际上,在linux中并没有exec函数,而是有6个以上的exec开头的函数族。原型:int execl(const char *path, const char *arg, ...)int execv(const char *path, char *const argv[])in

2017-05-15 19:56:29 257

原创 系统编程三

进程的创建和退出(1) fork函数原型 pid_t fork(void);头文件:#include 说明:该函数执行成功之后,将会产生一个新的子进程,在新的子进程中其返回值为 0,在原来的父进程中其返回值为大于 0 的正整数,该正整数就是子进程的 PID。程序:int main(int argc, char **argv){printf("[%d]\n", __L

2017-05-15 16:16:10 236

原创 系统编程二

进程状态转换父进程通过一个fork()可以生出一个子进程,此时是就绪状态(task_running),它是在等待cpu的调度(schedule),如果它被CPU调度了,就会变成执行态(task_running)。如果此时需要等待资源(好比是排队排到你了,但你忘记带钱了),就进入睡眠状态,可分为浅度睡眠和深度睡眠。浅的可以被信号中断唤醒,深的不行,浅的一般都是等待一个软件信号,深的都是硬件信号,

2017-05-12 11:38:32 219

原创 系统编程一

进程是一个程序的一次执行的过程。进程和程序的区别:程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念。进程是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡。进程是资源管理的最小单位。线程是系统调度的最小单位。task_struct在内核中称之为任务,cpu是调度它。进程包含指令和用户数据,当执行一个程序时,系统将程序中的指令和数

2017-05-12 10:24:37 301

原创 文件IO编程十二

windows目录是是一个容器,是在分区下的,也是一个文件夹而linux下目录是一个路径,是供分区挂载的,用户通过这个路径才可以找到分区。  i_node是描写文件的属性。dir/是文件名以及索引名。我们在操作文件的时候,经常需要获取文件的属性,比如类型、权限、大小、所有者等等。头文件:#include  #include #include 原型:int

2017-05-11 21:47:13 247

原创 文件IO编程十一

这一节主要是讲缓冲类型。根据不同的刷新时间可分为不同的缓冲类型:不缓冲、全缓冲、行缓冲。标准输出stdout是行缓冲,stderr是不缓冲。普通文件打开都是全缓冲不缓冲====================一旦遇到数据全缓冲:=====================1 填满了缓冲区2 fflush() 强制刷新3 fclose()调用fflush()

2017-05-11 17:13:59 198

原创 文件IO编程十

(1) fgets 详解函数:char *fgets(char *s, int size, FILE *stream);说明:fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符,读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。 若成功则返回s指针,返回NULL则失败。(2) fputs详解函数:

2017-05-11 14:49:37 218

原创 文件IO编程九

(1) fgetc/getc/getchar 详解函数:int fgetc(FILE *stream);说明:fgetc()从参数stream所指的文件中读取一个字符,若读到文件尾而无数据时则返回EOF。正常情况下是返回该值函数:int getc(FILE *stream);说明:与fgetc()的区别就是fgetc()是函数调用,而getc()是宏,它会相对比较快速。但是普通

2017-05-11 11:51:17 210

原创 文件IO编程八

这一节主要是讲标准IO标准IO的操作对象是文件指针,FILE *。而且标准IO是有缓冲区的。stdout是行缓冲。这个文件指针则是由fopen()函数获取的。(1)  fopenFILE *fopen(const char *path, const char *mode);头文件 #include path:要打开的文件。mode: “r”:  以只读方式打

2017-05-10 23:56:19 181

原创 文件IO编程七

这一节主要是讲mmap()和错误码的处理mmap函数mmap()函数在进程的虚拟内存空间中映射出一块内存区域,用以对应指定的一个文件,该内存区域上的数据对应的文件的数据是一一对应的,并在一开始的时候用文件的内容来初始化这片内存。void *mmap(void *addr, size_t length,int prot, int flags, int fd, off_t offs

2017-05-10 17:59:31 302

原创 文件IO编程六

这一节继续讲解系统IO函数(1) dup头文件:#include 定义函数:int dup (int oldfd);说明:dup()用来复制参数oldfd所指向的文件描述符,此时返回的新的文件描述符和参数oldfd所指的是同一个文件,共享所有的锁定、读写位置和各项权限或旗标。例如,当利用lseek()对某个文件描述符作用时,另一个文件描述符的读写位置也会随着改变。

2017-05-10 16:21:45 214

原创 文件IO编程五

这一节主要是将系统IO的四个函数:read write(1)read头文件:#include ssize_t read(int fd, void * buf, size_t count);说明:read是把参数fd所指的文件传送count个字节到buf指针所指的内存中去。若参数count为0,则read()不会有作用并返回0。返回值为实际读取的字节数,若返回0.表示已经读取完成

2017-05-09 23:32:45 237

原创 文件IO编程四

这一节主要将系统IO的特点以及处理文件的函数。首先介绍以下linux下的七种文件系统:1.d 目录2.- 普通文件3.c 字符设备4.b 块设备5.l 符号链接文件6.s 本地套接字7.p 管道文件文件描述符是什么意思呢?一个txt文件读到哪了,或者它是以什么模式打开的等等信息都记录在file这个结构体中,一个file结构体只能记录一个文件的信息

2017-05-09 16:30:50 293

原创 文件IO编程三

这一节主要是讲系统IO和标准IO的区别。在VFS虚拟文件系统的上层有个系统调用API,系统I/O有一部分是操作文件IO,而标准IO是封装过的,它最终也会调用系统IO。区别:1. 系统IO是操作文件描述符(整数),而标准IO是操作文件指针。2. 系统IO比较耗时,所以标准IO是有个缓冲区buffer的,只有达到某一个阙值,它才会去调用系统IO,这样比较省时。

2017-05-09 15:22:04 336

原创 文件IO编程二

上一章主要是讲了文件系统以及整个操作的流程,这一讲主要是讲VFS虚拟文件系统引言LINUX中允许众多不同的文件系统共存,如ext2,ext3,vfat等。通过使用同一套文件I/O系统调用即可对LINUX中的任意文件进行操作而无需考虑文件系统格式。对文件的操作也可以跨文件系统而执行。我们可以使用cp命令从vfat文件系统格式的硬盘拷贝数据到ext3文件系统格式的硬盘,这操作涉及到两个不同的文

2017-05-09 15:10:31 191

DHT11传感器

DHT11传感器在51单片机的C语言程序

2015-05-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除