1、UNIX基础知识
来源:互联网 发布:淘宝店卖家版官方下载 编辑:程序博客网 时间:2024/06/11 21:03
1、UNIX体系结构
(1)操作系统内核控制硬件资源,调度并提供程序运行环境。
(2)系统调用即进入内核的接口
(3)shell(壳,与内核对应)是个特殊的应用程序,为运行其他应用程序提供一个接口
(4)库函数封装一定的系统调用,为其他应用程序提供一个接口
(5)应用程序可以使用shell接口,库函数间接使用内核接口,也可以直接通过系统调用进入内核。
2、用户登录
用户登录对应于口令文件/etc/passwd。用户ID=0是root用户,所有口令文件中包含登录名和用户ID之间的映射关系。
//用户名:口令:用户ID:组ID:注释:其实目录:登录后默认提供的shellyong:x:205:105:kouling:/home/yong:/bin/shftp:x:113:121:ftp daemon,,,:/srv/ftp:/bin/false
3、文件和目录
斜杠分割路径名,空格终止一个路径名。只有斜杠 / 和空格 不能出现在文件名中。
创建新目录时会自动创建两个文件名:. 和 .. 一个指向当前目录,一个指向父目录。最高层次的目录则两者一样。
4、myls:读取目录内的文件名,打开目录返回的文件标准符,它指向目录的表项
#include "apue.h"#include <dirent.h>int main(int argc, char *argv[]){ DIR *dp; struct dirent *dirp; if(argc != 2) err_quit("usage: ls directory_name"); //opendir返回指向DIR结构的指针 if((dp = opendir(argv[1])) == NULL) err_sys("can't open %s", argv[1]); //readdir返回指向dirent结构的指针 while((dirp = readdir(dp)) != NULL) printf("%s\n", dirp->d_name); closedir(dp); exit(0);}//struct direntstruct dirent {#ifndef __USE_FILE_OFFSET64 __ino_t d_ino; __off_t d_off;#else __ino64_t d_ino; __off64_t d_off;#endif unsigned short int d_reclen; unsigned char d_type; char d_name[256]; /* We must not include limits.h! */ };//DIRtypedef struct __dirstream DIR;
5、文件描述符,小的非负整数,内核用以标识进程正在访问的文件,内核打开、创建、读写文件时会用到文件描述符。
6、标准输入、输出、错误
每当运行一个新程序时所有shell都会打开这3个文件描述符。默认都指向终端
//read函数ssize_t read(int fd,void *buf,size_t nbyte); fd:表示从这个文件句柄所代表的文件读取数据。buffer:指缓冲区,即读取的数据会被放到这个缓冲区中去。n: 表示调用一次read操作,应该读多少数量的字符。返回值:返回系统实际所读取的字符数量//write函数ssize_t write(int fd,const void *buf,size_t nbytes) 将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1.
#include "apue.h"#define BUFFSIZE 4096int main(void){ int n; char buf[BUFFSIZE]; //STDIN_FILENO、STDOUT_FILENO为标准输入输出描述符,值为0,1 while((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0) { if(write(STDOUT_FILENO, buf, n) != 0) err_sys("write error"); } if(n < 0) err_sys("read error"); exit(0);}$ ./myio <in_data >out_data, 标准输入重定位为文件in_data,输出重定位为out_data
7、出错处理
errno可以是包含出错号的整数,也可以是一个返回出错编号指针的函数。
//首字母f表示可以指定输出的文件,printf直接输出标准输出int fprintf( FILE *stream, const char *format, ... );指定format(格式)发送信息(参数)到由stream(流)指定的文件.printf(...)=fprintf(stdout,...).返回值:成功则返回输出的字节数,失败返回eof;char *strerror(int errnum);//把errnum值映射为一个出错消息字符串,返回指向字符串的指针void perror(const char *msg);//先输出msg指向的字符串+冒号+空格,再输出前面errno对应的字符串
8、信号
//发生信号SIGINT,需要执行函数sig_int,即信号捕捉signal(SIGINT, sig_int);
#include "apue.h"#include <sys/wait.h>static void sig_int(int);int main(void){ char buf[MAXLINE]; pid_t pid; int status; if(signal(SIGINT, sig_int) == SIG_ERR) err_sys("signal error"); printf("%%"); while(fgets(buf, MAXLINE, stdin) != NULL){ if(buf[strlen(buf) - 1] == '\n') buf[strlen(buf) - 1] = NULL; if((pid = fork()) < 0) err_sys("fork error"); else if(pid == 0){ execlp(buf, buf, (char *)0); err_ret("could't execute: %s", buf); exit(127); } if((pid = waitpid(pid, &status, 0)) < 0) err_sys("waitpid error"); printf("%%"); } exit(0);}void sig_int(int signo){ printf("interrupt\n%% ");}
9、时间值
(1)时钟时间:进程运行的总时间
(2)用户CPU时间
(3)系统CPU时间:该进程内内核程序经历的时间(如调度线程的时间等)
阅读全文
0 0
- Unix/Solaris基础知识(1)
- Chapter 1 Unix基础知识
- Unix 1 基础知识
- 1、UNIX基础知识
- unix网络编程1 基础知识
- 第1章 unix基础知识
- 【APUE】1、第一章UNIX基础知识
- 第1章 UNIX基础知识
- Unix 基础知识
- UNIX基础知识
- Unix基础知识
- 【Unix】基础知识
- Unix基础知识
- unix基础知识
- unix 基础知识
- UNIX基础知识
- unix基础知识
- UNIX基础知识
- 易飞会计科目表自己外挂表构造语句
- 改变eureka server中注册的服务的健康检测方式
- pdf转CAD如何输出类型为dxf
- java枚举 enum
- python爬虫框架scrapy一次执行多个爬虫文件
- 1、UNIX基础知识
- JavaScript
- Java基础之集合框架--EnumMap(枚举映射类)
- HTML空格占位符
- Core Animation
- django1.11.5版本在后台显示图片方法,
- Android平台开发-WIFI 驱动移植 -- 详细
- Mysql 5.3.6 安装
- 阿里云部署(一):注册、备案