io学习第三天

今天依旧学习了操控目录的函数,还有一些理论知识

1、opendir函数:

头文件:sys/types.h   dirent.h

DIR *opendir(const char *name)

参数1:目录流指针

功能:打开一个目录。

成功后返回一个目录流指针,失败后返回NULL;

2、closedir函数:

头文件:sys/types.h   dirent.h

int closedir(DIR *dirp)

参数:目录流指针

功能:关闭打开的目录

成功后返回0,失败后返回-1;

3、readdir函数:

头文件:dirent.h

struct dirent *readdir(DIR *ditp)

参数:目录流指针

功能:获取目录中文件的信息

成功后返回文件信息的结构体,失败后返回NULL;

4、函数库

        本质上来说就是可执行代码的二进制形式,是一种别人写好的,成熟的可以复用的看不懂的二进制的文件。

静态库:是在代码编译和链接时完成的,运行时与函数库无关,和代码在一起移植起来方便,但是每个函数都要空间,比较浪费空间和资源,代码体积大。

动态库:是在代码运行时完成的,在编辑时不会链接到目标代码中,因此可以共享,代码体积小

构建一个静态库:

        1、我们自己先建个个人定义的函数文件如(fun.c)然后通过指令生成库文件所需要的功能函数的可重定向文件。    gcc -c fun.c -o fun.o

        2、然后生成静态库文件 。            ar crs libfun.a fun.o           lib和.a分别为库文件的前缀静态库文件的后缀。

        3、接着编辑运行:   gcc main.c -o main -L. -lfun                

        -L 指定库的路径,   -l 指定库的名字       

构建一个动态库:

        1、生成制作库文件所需要的功能函数的可重定向文件

        gcc -fPIC -c -o fun.o          fPIC生成与位置无关的代码(s生成的动态库文件的内存上,可自动寻找一块内存区域)

        2、生成动态库文件:

        gcc -shared fun.o -o libfun.so       .so 动态库文件后缀

        3、gcc main.c -o main -lfun

        直接编译会失败,原因是直接编译会找不到动态库文件,

5、进程

        计算机中每一个正在运行的程序的实列叫进程,每个进程都有一定的内存空间,进程建立都会分配一个进程控制块(PCB每个PCB都有一个特定的进程号)里面会记录这进程的相关信息;

        进程与程序的区别:进程是一个动态的概念,是正在运行的程序,消耗的是系统的物理内存。而程序是储存在磁盘上的可执行文件,是一个静态的概念;

        进程的执行有并发和并行两种,并发指的在同一时刻有多个进程在运行。而并行指的同一时间段有多个进程在运行,但同一时刻只有一个进程在有运行,因为对于计算机而言这个时间段很短,所以感觉进程在同时运行;而至于进程运行的顺序,有相关的进程调度算法;

        进程的三种基本状态:

  

 详细的还可以分为五种、七种;

6、fork进程函数

        头文件:sys/types.h   unistd.h

pid_t fork(void)

功能:当前进程创建子进程

成功后在父进程中返回子进程的进程号,在子进程返回0。失败返回-1;

7、getpid函数:

头文件:sys/types.h   unistd.h

pid_t getpid(void)

功能:获取当前进程的进程号

成功后返回当前进程号(pid_t类型),失败后返回-1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值