美文网首页
UNIX基础(一)

UNIX基础(一)

作者: 千里山南 | 来源:发表于2016-01-27 23:46 被阅读38次

    2016-01-27


    登录名

    登录名通常在/etc/passwd中,item中7项分别代表登录名,加密口令,数字id,数字组,注释字段,起始目录及shell程序
    常用的shell有Bourne shell /bin/sh C shell /bin/csh KornShell /bin/ksh
    其中Bourne shell比较流行

    文件系统

    stat和fstat函数返回一个包含所有文件属性的信息结构

    文件名

    斜线(/)和null不能出现在文件名中。当创建一个新目录是自动创建了.和..分别代表当前目录和父目录。文件系统中文件名最长255
    读取根目录程序如下

    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>
    
    
    int main(int argc, const char * argv[]) {
        DIR *dir;
        struct dirent *dirp;
        if (argc == 1) {
            dir = opendir("/");
        } else if (argc == 2) {
            dir = opendir(argv[1]);
        }
        while ((dirp = readdir(dir)) != NULL) {
            printf("%s\n",dirp->d_name);
        }
        closedir(dir);
        return 0;
    }
    

    工作目录

    每个进程都有一个工作目录也称当前工作目录,所有相对路径都从工作目录开始解释。进程可以用chdir函数更改工作目录

    起始目录

    登陆时,工作目录设置为起始目录,该目录从口令文件中读取

    输入和输出

    文件描述符:内核用于标识一个特定进程正在存访的文件,为非负整数。
    一般情况下每当运行一个新程序时所有she'll都为其打开三个文件描述符:标准输入、标准输出及标准出错。如果简单命令没有特殊处理则它们都连向终端。ls > file.list 为重定向

    不用缓存的io

    open read write lseek close提供了不用缓存的io 它们都用文件描述符进行工作
    <unistd.h>中包含了STDIN_FILENO和STDOUT_FILENO它们制定了标准输入和标准输出的文件描述符

    标准io

    标准io提供一种对不用缓存的io函数的带缓存的界面,无需担心如何选择缓存。如 fgets能完整读取一行 printf等 标准io一般包含在 <stdio.h>中
    getc putc一次读一个字符 stdin stdout分别表示标准输入和标准输出文件

    程序和进程

    程序:存放在磁盘文件中的可执行文件,使用6个exec函数中的一个由内核将程序读入存储器并执行
    程序的执行实力被称为进程,每个进程的唯一数字标识为进程id为非负值
    进程控制的主要函数 fork exec waitpid
    调用fork创建一个新进程,新进程是调用进程的复制品,调用进程是父进程,新创建进程为紫禁城。fork对父进程返回新紫禁城的非负进程id,对子进程则返回0.子进程也从fork处开始执行。

    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>
    #include <unistd.h>
    #include <sys/wait.h>
    
    
    int main(int argc, const char * argv[]) {
        pid_t pid;
        pid = fork();
        if (pid > 0) {
            printf("I am the parent pid = %d\n", pid);
        } else if (pid == 0) {
            printf("I am child!\n");
        }
        return 0;
    }
    

    execlp函数从PATH环境变量所指的目中查找符合参数file的文件名,找到后执行该文件,然后将第二个以后的参数当做文件的arg[0]、arg[1]...
    如果执行成功则函数不会返回,执行失败则返回-1。eg execlp(“ls”,”ls”,”-al”,”/etc/passwd”,(char *)0);
    waitpid 此函数会阻塞当前进程直至有信号传来或者进程结束

    相关文章

      网友评论

          本文标题:UNIX基础(一)

          本文链接:https://www.haomeiwen.com/subject/pyxjkttx.html