- 博客(26)
- 收藏
- 关注
原创 高级IO(非阻塞IO,有限状态机编程、多路转接、其他读写函数、存储映射IO)
高级IO(非阻塞IO,有限状态机编程、多路转接、其他读写函数、存储映射IO)
2022-07-04 23:08:34
240
原创 信号(信号常用函数、信号集、信号屏蔽字以及pending集的处理、扩展函数、实时信号)
信号(信号常用函数、信号集、信号屏蔽字以及pending集的处理、扩展函数、实时信号)
2022-07-03 23:50:07
278
原创 并发(信号概念、signal、信号的不可靠、可重入函数、信号的响应过程)
并发(信号概念、signal、信号的不可靠、可重入函数、信号的响应过程)
2022-06-26 22:55:38
328
原创 进程三(用户权限以及组权限、解释器文件、进程会计、进程时间、守护进程、系统日志的书写)
进程知识点(用户权限以及组权限,解释器文件,进程会计,进程时间,守护进程,系统日志的书写)
2022-06-21 19:54:34
176
原创 进程环境二(环境变量、C程序的存储空空间布局、库、函数跳转、资源的获取以及控制)
环境变量,C程序的存储空间布局,库,函数跳转,资源的获取以及控制
2022-05-31 18:35:48
129
原创 进程环境(main、进程终止、钩子函数、命令行参数分析)
main函数 int main(int argc,char *argv[])进程的终止情况正常终止:从main函数返回调用exit调用_exit或_Exit最后一个线程从其启动例程返回异常终止:调用abort接到一个信号并终止最后一个线程对其取消请求做出响应echo $?//打印上一条语句的执行状态#include <stdio.h>#include <stdlib.h>int main(){ printf("hello\n
2022-05-30 23:05:44
272
原创 文件系统三(/etc/passwd、group、shadow,时间戳)
二、系统数据文件和信息/etc/passwd函数:getpwuid()getpwnam();;#include <sys/types.h>#include <pwd.h>struct passwd *getpwnam(const char *name);//传一个name得到这个用户的详细信息struct passwd *getpwuid(uid_t uid);//传一个id 获得用户的详细信息//通过uid和name查询用户信息 struct passwd
2022-05-29 23:45:36
237
原创 文件系统二
umaskumask是一个命令,可以得到当前的umask值作用:防止产生权限过松的文件也有同名函数文件权限的管理/更改Chmod:chmod 666 .c(文件)改变一个文件的权限fchmod:以上都有同名函数文件系统:FAT,UFS定义:文件或是数据的存储格式问题和管理FAT16/32:是一个静态存储的单链表单链表最大的缺陷是单向的,承载能力有限轻量级,比较容易实现UFS:实际生产环境当中一块的大小4K起步一个文件的几乎所有信息都存放在一个文件的inode当中Inode它
2022-05-27 22:45:08
164
原创 文件系统一(文件属性、文件的访问权限)
文件属性相关函数:stat, fstat, lstat, fstatat------------------------------------- get file status #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(const char *pathname, struct stat *buf);//通过文件名获得文件的属性信息,放
2022-05-15 16:11:59
381
原创 IO学习五(文件共享、原子操作、重定向、同步、fcntl、ioctl、虚目录)
IO的效率问题:习题:mycp(read版本的)里面的BUFSIZE值为1和10的区别,10和100的区别,当BUFSIZE达到一个值,这个时候如果在增大BUFSIZE就会出现性能下降。观察进程所消耗的时间注意性能最佳拐点出现时的BUFSIZE值,以及何时程序会出问题。文件共享:多个任务共同操作一个文件或是协同完成任务。写程序删除一个文件的第十行。文件的存放有点像数组的存放数组当中我们删除一个元素,实际上是把删除的元素覆盖掉,将删除元素后面的元素逐个向前移动。这个数组最终还是那么大的空间,但是会
2022-05-14 20:11:16
312
原创 IO学习四(系统调用IO(文件IO))
系统调用IO(文件IO),文件描述符在文件IO中贯彻始终(fd)每个文件都有一个唯一的inode。打开一个文件也会产生一个结构体文件描述符的概念:实质是一个整形数,是一个数组下标。每次执行一个打开的动作,都会关联一个结构体,这个结构体包含了这个文件的所有属性,将结构体的指针保存在数组当中,所有最后给用户的是一个整形数(数组的下标),操作文件就使用这个整型数,通过这个整数,可以找到指针,这个指针可以知道结构体,通过这个结构体我们操作的就是这个文件。比如当我们fopen打开一个文件的时候,会产生一
2022-05-14 00:38:19
678
原创 IO学习三(fseek、ftell、rewind、fflush、 getline、临时文件)
我们现在要做这样一件事:fp=fopen();打开一个文件fputc(fp) 10;每次写进一个字符,写10次,就往文件中写了10个字符fgetc() 10;想要读出写进去的字符,那么就读10次上面的逻辑是错误的,因为文件当中有一个文件位置指针,写的时候是依次向后移动,读的时候也是,像是一个游标。读和写一定是从当前位置开始的,上面伪码在写完以后,位置指针最终指向的是第十个位置,然后读的时候,就会从第十一个位置开始。读的内容不知道。有一个很笨拙地方法:fp=fopen();fputc(f
2022-05-12 14:53:16
457
原创 IO学习二(fgetc,fputc,fgets,fputs,fread,fwrite,fprintf,fscanf)
作为字符输入输出的相关函数会想到getchar(getchar() is equivalent to getc(stdin))。和putchar(putchar© is equivalent to putc(c, stdout))。fgetc();----------------------input of characters #include <stdio.h> int fgetc(FILE *stream);返回值:fgetc(), getc() and ge
2022-05-11 18:28:56
260
原创 IO学习一(fopen,fclose,文件权限)
I/O:input and ouput,是一切实现的基础分为两种1、标准I/O(stdio):2、系统调用I/O(文件IO)(sysio):若在一个环境下两个IO都可以使用,那么优先使用标准IO看一下,标准IO和系统调用IO之间的联系和区别如果user需要对话kernel时,kernel提供了一组函数让user可以对话kernel这组函数就是sysio(系统调用IO),如果kernel不一样,那么提供的系统调用IO就不一样,就比如说Linux和Windows的内核不一样,那么实现的时候就要顾
2022-05-10 13:31:48
974
原创 线程学习五(线程属性、重入、进程与信号的关系,openmp标准)
线程属性在使用函数pthread_create()int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);第二个项就用到了属性,是pthread_attr_t类型。之前都是用的NULL,跟着默认来。相关函数:pthread_attr_init();pthread_attr_destroy ();- initialize and d
2022-05-09 13:53:14
602
原创 线程学习四(条件变量,信号量、读写锁)
条件变量(通知法)查询法,需要反复等着一个事件的发生:不停查看状态。上文的任务池就是一直查看状态。下面介绍通知法,使用的是线程的条件变量,pthread_cond_t:相关函数:pthread_cond_init();pthread_cond_destroy();---------------------- destroy and initialize condition variables #include <pthread.h> int pthread_cond_d
2022-05-08 19:07:24
231
原创 线程学习三:互斥量的使用
线程同步解决竞争问题就要用到线程同步,用到互斥量pthread_mutex_t这个机制。互斥量:相当于有一把琐,当一个线程抢到了这把锁,就把门锁上,然后再操作。出来再解锁,再由其他的线程抢锁。是限制一段代码,以独占的形式实现.相关函数:pthread_mutex_destroy();pthread_mutex_init();— destroy and initialize a mutex#include <pthread.h> int pthread_m
2022-05-07 16:00:18
442
原创 线程学习二(线程取消、分离、竞争)
线程取消选项一个线程在运用的过程中一般都会用到线程取消比如说一棵二叉树,查找某个结点,一个查找太累,用多个线程进项查找,会有一个找到,那么其他的线程就需要线程取消,然后在收尸。正在运行的线程是无法收尸收回来的函数pthread_cancel();pthread_cancel - send a cancellation request to a thread#include <pthread.h> int pthread_cancel(pthread_t thread);
2022-05-06 15:25:01
228
原创 线程学习一(线程概念、创建、终止、收尸,栈的清理)
1、线程概念:线程就是一个正在运行的函数一个进程里面至少会有一个线程多个线程的内存是共享的posix线程是一套标准,不是实现openmp线程也是一种标准线程标识:pthread_t(类型不清楚,但是在Linux下是整形数)相关函数介绍:pthread_equal():pthread_equal - compare thread IDs #include <pthread.h> int pthread_equal(pthread_t t1, pthread_t t2)
2022-05-05 15:55:17
733
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人