高级程序设计
科普卢之光
这个作者很懒,什么都没留下…
展开
-
linux高级程序设计——进程
进程的定义 程序: 程序是存放在存储介质上的一个可执行文件。 进程: 进程是程序的执行实例,包括程序计数器,寄存器和变量的当前值。程序是静态的,进程是动态的。 程序是一些指令的有序集合,而进程是程序执行的过程。进程是程序的一次执行过程。进程的状态是变化的,其包括进程的创建,调度和消亡。 只要程序运行,此时就是进程,程序每运行一次,就会创建一个进程。 在linux系统中,进程是管理事务的基本单元。 进程拥有自己独立的处理环境和系统资源(处理器,存储器,I/O设备,数据,程序)。 可用exec函数由内核将程序读原创 2020-11-30 13:56:30 · 567 阅读 · 1 评论 -
Linux高级程序设计——I/O函数——系统调用与库函数
系统调用与库函数 库函数由两类函数组成 1.不需要调用系统调用 不需要切换到内核空间即可完成函数全部功能,并且将结果反馈给应用程序,如strcpy,bzero等字符串操作函数。 2.需要调用系统调用 需要切换到内核空间,这类函数通过封装系统调用去实现相应功能,如printf,fread等 库函数与系统调用的关系 并不是所有的系统调用都被封装成了库函数,系统提供的很多功能都必须通过系统调用才能实现。 系统调用是需要时间的,程序中频繁使用系统调用会降低程序的运行效率。 当运行内核代码时,CPU工作在内核态,原创 2020-11-17 13:06:33 · 220 阅读 · 0 评论 -
Linux高级程序设计——I/O函数——remove函数
remove库函数 删除文件 #include<stdio.h> int remove(const char *pathname); 参数: pathname:文件的路名+文件名 返回值: 成功返回0; 失败返回-1,可以利用perror去查看原因。原创 2020-11-17 12:34:50 · 271 阅读 · 0 评论 -
Linux高级程序设计——I/O函数——read函数
read函数 把指定数目的数据读到内存 #include<unistd.h> ssize_t read(int fd, void *addr, size_t count); 参数: fd:文件描述符 addr:内存首地址 count:读取的字节数 返回值: 成功返回实际读取到的字节数。 失败返回-1,可以利用perror去查看原因. 注意:如果读取文件末尾,返回0 从终端读取数据 从文件中读取数据 ...原创 2020-11-17 12:22:12 · 195 阅读 · 0 评论 -
Linux高级程序设计——I/O函数——write函数
write函数 把指定数目的数据写到文件 #include<unistd.h> ssize_t write(int fd, const void *addr,size_t count); 参数: fd : 文件描述符 addr:数据首地址 count:写入数据的字节个数 返回值: 成功返回实际写入数据的字节个数 失败返回-1,可以利用perror去查看原因。 向终端写入数据: ...原创 2020-11-17 09:53:12 · 164 阅读 · 0 评论 -
linux高级程序设计——I/O函数——close函数
close函数 #include<unistd.h> int close(int fd); 功能: 关闭一个文件描述符 参数: fd:指定文件的文件描述符,open函数的返回值 返回值 成功: 0 失败: -1原创 2020-11-16 10:37:18 · 230 阅读 · 0 评论 -
linux高级程序设计——系统调用I/O函数
文件描述符 文件描述符是非负整数。打开现存文件或新建文件时,系统(内核)会返回一个文件描述符。文件描述符用来指定已打开的文件。 在系统调用(文件IO)中,文件描述符对文件起到标识作用,如果要操作文件,就是对文件描述符的操作 一个程序运行或者一个进程开启时,系统会自动创建三个文件描述符 0 标准输入 1 标准输出 2 标准输出出错 文件IO的文件描述符和标准IO的文件指针的对应关系 文件I0 标准IO 0原创 2020-11-15 12:17:40 · 142 阅读 · 0 评论