day09

1.文件的管理

1.1 stat和fstat函数的使用(重点)

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *pathname, struct stat *buf);
int fstat(int fd, struct stat *buf);
第一个参数:字符串形式的文件按路径名/文件描述符
第二个参数:结构体指针,传递结构体变量的地址,类型如下
struct stat{
    mode_t  st_mode;//文件的类型和权限
    off_t   st_size;//文件的大小     重点
    time_t  st_time;//最后一次修改时间
};
函数功能:
    主要用于获取指定文件的状态信息;

#include<time.h>
char *ctime(const time_t *timep);
=>主要用于将参数指定的整数时间转换为字符串形式的类型时间;

#include<time.h>
struct tm *localtime(const time_t *timep);
=>主要用于将参数指定的时间转换为结构体指针类型;而结构体的类型如下:
struct tm{
    int tm_sec;    /* 秒 */
    int tm_min;    /* 分 */
    int tm_hour;   /* 时 */
    int tm_mday;   /* 日 */
    int tm_mon;    /* 月  + 1*/
    int tm_year;   /* 年  + 1900*/

};

注意:

请问获取一个文件大小的主要方式有那些?

  • a.调用fseek()和ftell()函数;
  • b.调用lseek()函数获取;
  • c.调用stat()/fstat()函数获取;

1.2 chmod/fchmod函数

#include <sys/stat.h>
int chmod(const char *pathname, mode_t mode);
int fchmod(int fd, mode_t mode);
第一个参数:字符串形式的路径名/文件描述符
第二个参数:具体的新权限,如:0664之类的
函数功能:
    主要用于将指定文件的权限修改为指定的新权限;

1.3 truncate/ftruncate函数(重点)

#include <unistd.h>
#include <sys/types.h>
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
第一个参数:字符串形式的路径名/文件描述符
第二个参数:指定最新的长度/大小
函数功能:
    主要用于修改文件的大小到指定的长度;
注意:
    如果文件的长度变小了,则多余的数据产生丢失;
    如果文件的长度变大里,则扩展的空间读到的数据是“\0”

练习:

vi 02chmod_truncat.c文件,首先使用stat函数获取文件a.txt的权限和大小并打印,然后使用chmod函数修改权限为0600,使用truncate函数修改为大小为100,最后再次调用stat函数获取文件的权限和大小并打印


1.4 又见mmap和munmap函数

  • 主要用于建立/解除 文件/设备 到 虚拟地址的映射;
  • 本质上就是把对文件的读写操转换为对内存地址的操作,当有大量的数据进行读写是,这种方式效率比read/write函数的方式要高一些。

练习: vi 03mmapB.c通过映射的方式将文件中的员工信息打印出来


1.5 其他操作函数

umask()函数 - 主要用于设置新文件在创建时要屏蔽的权限;
link()函数  - 主要用于创建硬链接
unlink()函数 - 主要用于删除硬链接
rename()函数 - 主要用于实现重命名的效果
remove()函数 - 主要用于删除文件;


2. 目录管理

2.1 常用的目录操作函数

(1)opendir函数
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);
函数功能:
    主要用于打开参数指定的目录,成功返回一个DIR类型的指针,失败返回NULL;
(2)readdir函数
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
函数功能:
    主要用于读取参数指定的目录中的内容;成功返回一个结构体指针,失败返回NULL。
    该函数返回NULL有两种情况,一种是读到里目录的末尾,但是不会改变errno的数值,另一种是出现里错误,但是会设置errno的数字表达错误的原因;
struct dirent {
               ....
               unsigned char  d_type;      /* 文件类型 */
               char           d_name[256]; /* 文件名称 */
           };
(3) closedir函数
#include <sys/types.h>
#include <dirent.h>
int closedir(DIR *dirp);
函数功能:
    主要用于关闭参数指定的目录;参数为opendir函数的返回值;

2.2 其他目录操作函数

mkdir()函数 - 主要用于创建目录
rmdir() - 主要用于删除目录
chdir() - 主要用于切换目录
getcwd() - 主要用于获取当前工作目录的绝对路径;

…..



3.进程的管理

3.1 基本概念和基本命令

(1)基本概念
程序 - 存放在磁盘/硬盘上的可执行文件;
进程 - 运行在内存中的程序
同一个程序可以同时对应多个进程;
(2)基本命令

ps - 表示查看当前终端所启动的进程的信息

ps命令的执行结果如下(了解):

TablesAreCool
PIDTTYTIMECMD
进程的编号(重点)终端的次要装置号码消耗CPU的时间进程的名称以及路径(重点)
  • ps -aux - 表示显示所有包括其他使用者的进程
  • ps -aux | more表示分屏显示进程的信息

ps -aux | more执行结果如下(了解):

TablesAreCool
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
用户名称进程编号CPU占用内存占用虚拟内存占用物理内存占用终端的次要装置号码进程状态信息进程的启动时间进程消耗CPU的时间进程的名称及路径
  • 常见的进程状态有(了解)
    S - 表示休眠状态,为了减去CPU的压力
    s - 表示进程的领导者,也就是拥有子进程;
    Z - 表示僵尸进程,就是已经结束但资源没有回收的进程
    R - 表示正在运行的进程
    O - 表示可以运行的进程
    T - 表示挂起状态的进程
    < - 表示优先级比较高的进程
    N - 表示优先级比较低的进程
    … …
ps -ef - 表示以全格式的方式显示所有进程的信息;注意:大多数UNIX系统中使用这个命令
ps -ef | more - 表示分屏显示进程信息

ps -ef | more 的执行结果如下(了解)

TablesAreCool
UIDPIDPPID(重点)CSTIMETTYTIMECMD
用户编号进程标号父进程编号CPU占用百分比进程的启动时间终端的次要装置号码消耗CPU 的时间进程的名称以及路径信息

>
>
父进程和子进程:

  • 目前主流的操作系统都支持多进程,如果进程A启动了进程B,那么进程A就叫做进程B的父进程,进程B就叫做进程A的子进程;
  • 当前系统中进程0(系统内部进程/调度进程)启动了进程1(init)和进程2,其他所有进程都是直接或间接由进程1或2启动起来,从而构成树形结构;
  • PID - 进程的编号,是操作系统中对进程的唯一标识,进程编号的数据类型一般是int类型,但是从0开始使用,操作系统一般会采用延迟重用的策略
    进行管理,保证在任意时刻进程号都是唯一的;

kill -9 进程号 - 表示杀死指定的进程

练习:要求打印指定目录中的所有内容,要求子目录内容也要打印出来;

    提示:
    void print(char * path) {
        //打印所有内容
    }
    int main(void)
    {
        printf("../../day3");
        return 0;
    }

明日预报: 进程管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值