美文网首页
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基础(一)

    2016-01-27 登录名 登录名通常在/etc/passwd中,item中7项分别代表登录名,加密口令,数字i...

  • The Art of unix programming

    The Art of unix programming 哲学 哲学基础: unix 哲学并不算是一种正规设计方法,...

  • Unix哲学基础

    一个程序只做一件事情,并做好。程序要能协作。程序要能处理文本流,因为这是最通用的接口。 Doug McIlroy(...

  • UNIX基础--权限

    权限 Permissions FreeBSD使用传统的UNIX®系统的基本权限。在UNIX®系统中,基本权限分配了...

  • UNIX基础--Shells

    Shells Shell提供了一个和操作系统交互的命令行接口。shell的主要功能就是从输入取得命令然后去执行。F...

  • UNIX基础(二)

    2016-01-28 函数原型 头文件 包含了许多Unix系统服务的函数原型如 read write getpid...

  • Unix哲学基础

    版本1 让每个程序就做好一件事。如果有新任务,就重新开始,不要往原程序中加入新功能而搞得复杂。 假定每个程序的输出...

  • apue 第一章 unix基础知识

    apue 第一章 unix基础知识 unix 体系结构 kernel(内核):一种软件,控制计算机的硬件资源,提供...

  • UNIX基础--Manual Pages

    联机手册 Manual Pages 最详细的使用说明文档莫过于 FreeBSD 里的联机手册了。 几乎每一个程序都...

  • Unix 基础知识

    Unix 基础知识 @[执行新程序, 打开文件, 读取文件, 分配存储区, 获取当前时间等, 应用程序, shel...

网友评论

      本文标题:UNIX基础(一)

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