- 博客(26)
- 收藏
- 关注
原创 高级IO(非阻塞IO,有限状态机编程、多路转接、其他读写函数、存储映射IO)
高级IO(非阻塞IO,有限状态机编程、多路转接、其他读写函数、存储映射IO)
2022-07-04 23:08:34
297
原创 信号(信号常用函数、信号集、信号屏蔽字以及pending集的处理、扩展函数、实时信号)
信号(信号常用函数、信号集、信号屏蔽字以及pending集的处理、扩展函数、实时信号)
2022-07-03 23:50:07
351
原创 并发(信号概念、signal、信号的不可靠、可重入函数、信号的响应过程)
并发(信号概念、signal、信号的不可靠、可重入函数、信号的响应过程)
2022-06-26 22:55:38
385
原创 进程三(用户权限以及组权限、解释器文件、进程会计、进程时间、守护进程、系统日志的书写)
进程知识点(用户权限以及组权限,解释器文件,进程会计,进程时间,守护进程,系统日志的书写)
2022-06-21 19:54:34
232
原创 进程环境二(环境变量、C程序的存储空空间布局、库、函数跳转、资源的获取以及控制)
环境变量,C程序的存储空间布局,库,函数跳转,资源的获取以及控制
2022-05-31 18:35:48
184
原创 进程环境(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
350
原创 文件系统三(/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
310
原创 文件系统二
umask umask是一个命令,可以得到当前的umask值 作用:防止产生权限过松的文件 也有同名函数 文件权限的管理/更改 Chmod:chmod 666 .c(文件) 改变一个文件的权限 fchmod: 以上都有同名函数 文件系统:FAT,UFS 定义:文件或是数据的存储格式问题和管理 FAT16/32:是一个静态存储的单链表 单链表最大的缺陷是单向的,承载能力有限 轻量级,比较容易实现 UFS: 实际生产环境当中一块的大小4K起步 一个文件的几乎所有信息都存放在一个文件的inode当中 Inode它
2022-05-27 22:45:08
244
原创 文件系统一(文件属性、文件的访问权限)
文件属性 相关函数: 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
450
原创 IO学习五(文件共享、原子操作、重定向、同步、fcntl、ioctl、虚目录)
IO的效率问题: 习题:mycp(read版本的)里面的BUFSIZE值为1和10的区别,10和100的区别,当BUFSIZE达到一个值,这个时候如果在增大BUFSIZE就会出现性能下降。观察进程所消耗的时间注意性能最佳拐点出现时的BUFSIZE值,以及何时程序会出问题。 文件共享: 多个任务共同操作一个文件或是协同完成任务。 写程序删除一个文件的第十行。 文件的存放有点像数组的存放 数组当中我们删除一个元素,实际上是把删除的元素覆盖掉,将删除元素后面的元素逐个向前移动。这个数组最终还是那么大的空间,但是会
2022-05-14 20:11:16
377
原创 IO学习四(系统调用IO(文件IO))
系统调用IO(文件IO),文件描述符在文件IO中贯彻始终(fd) 每个文件都有一个唯一的inode。 打开一个文件也会产生一个结构体 文件描述符的概念: 实质是一个整形数,是一个数组下标。 每次执行一个打开的动作,都会关联一个结构体,这个结构体包含了这个文件的所有属性,将结构体的指针保存在数组当中,所有最后给用户的是一个整形数(数组的下标),操作文件就使用这个整型数,通过这个整数,可以找到指针,这个指针可以知道结构体,通过这个结构体我们操作的就是这个文件。 比如当我们fopen打开一个文件的时候,会产生一
2022-05-14 00:38:19
775
原创 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
560
原创 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
312
原创 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
1061
原创 线程学习五(线程属性、重入、进程与信号的关系,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
714
原创 线程学习四(条件变量,信号量、读写锁)
条件变量(通知法) 查询法,需要反复等着一个事件的发生:不停查看状态。上文的任务池就是一直查看状态。下面介绍通知法,使用的是线程的条件变量,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
289
原创 线程学习三:互斥量的使用
线程同步 解决竞争问题就要用到线程同步,用到互斥量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
498
原创 线程学习二(线程取消、分离、竞争)
线程取消选项 一个线程在运用的过程中一般都会用到线程取消 比如说一棵二叉树,查找某个结点,一个查找太累,用多个线程进项查找,会有一个找到,那么其他的线程就需要线程取消,然后 在收尸。正在运行的线程是无法收尸收回来的 函数 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
281
原创 线程学习一(线程概念、创建、终止、收尸,栈的清理)
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
785
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅