1 shell

shell 是一个命令行解释器,它读取用户输入,然后执行;

2 文件和目录

文件命名一般限制在字母、数字、短线(-)、下划线(_);创建新目录时会自动创建两个文件名 ——.(点)和..(点点),分别代表指向当前目录,以及父目录,即向上跳转一级到它的上级目录】;chdir是相当于控制台的cd指令,换路径,此后文件可以 ./ 的相对路径形式打开,直接 / 表示跳转到根目录。

//读取文件夹内各个文件的名称
#include <iostream>
#include <dirent.h>
#include <stdlib.h> //包含了opendir,readdir,dirent结构体的定义和声明;
#include <unistd.h> //如果要使用chdir,需声明
int main(int argc,char* argv[])
{
    DIR *dp;
    struct dirent *dirp;    //d_ino,文件唯一编号,d_name,文件名char[]

    if(argc!=2)
    {
        printf("参数输入不正确!\n");
        exit(EXIT_FAILURE);
    }
    //chdir(argv[1]);    //输入文件夹
    //如果使用chdir ,下面可以换成 dp = opendir("."))==NUL,表示相对路径
    if((dp = opendir(argv[1]))==NULL) 
    {
        printf("FirDirectory can't be founded!\n");
        exit(EXIT_FAILURE);
    }
    while((dirp=readdir(dp))!=NULL)
    {
        printf("%s\n",dirp->d_name);
    }
    closedir(dp);
    return 0;
}

//运行结果
$ ./learn20260716 > file.list
$ cat file.list
参数输入不正确!

        在终端中,可以使用命令来打印输出内容,其中,echo:输出你直接写的文字,源头是命令行字符串; cat:读取文件里存的内容再输出,源头是磁盘文件。“>”代表写入,覆盖写,“>>”则为追加写,在文件末尾写入;两者都可以写入内容到文件中。(ps: cat是concatenate的缩写,所以,该指令也可以拼接多个文件到一个文件中cat a.txt b.txt > c.txt)

3 程序和进程

        程序是一个存储在磁盘上某个目录中的可执行文件;进程是指程序的执行实例,操作系统确保每一个进程都有一个唯一数字标识符,称为进程ID,他总是一个非负整数。(get progress id);同时,对于磁盘中的每个文件,文件系统都存储了该文件所有者的用户ID和组ID(getuid(),getgid())。

printf("Current process ID %d.\n",getpid());

//运行结果
$ g++ learn20260716.cpp -o learn20260716
$ ./learn20260716
Current process ID 121.
$ ./learn20260716
Current process ID 122.

4 出错处理

        当系统函数出错时,通常返回一个负值,而整型变量 errno 通常被设置为具有特定信息的值。(error number

#include <iostream>
#include <dirent.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>

int main(int argc,char* argv[])
{
    fprintf(stdout,"EACCES: %s\n",strerror(EACCES));
    errno = ENOENT;
    perror(argv[0]);
    return 0;
}

//运行结果
$ g++ learn20260716.cpp -o learn20260716
$ ./learn20260716
EACCES: Permission denied
./learn20260716: No such file or directory

        EACCES:权限不足错误码,Error Access;ENOENT:文件 / 目录不存在错误码,Error No Entry。

5 时间值

        当度量一个进程的执行时间时,UNIX系统为一个进程维护了3个进程时间值;

  • 时钟时间:正常日历上的时间;
  • 用户CPU时间:执行用户指令所需要的时间;
  • 系统CPU时间:该进程内核程序所经历的时间。

6 知识点回顾

主题 相关操作
文件

#include <dirent.h>  DIR,struct dirent类型(.d_name),opendir, readdir,closedir;

#include <string.h> chdir;

输出指令 echo, cat
ID

进程ID:getpid();

用户ID:getuid();

组ID:getgid().

错误 #include <errno.h> errno错误整型,EACCES,ENOENT, perrno();
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐