对于一个从C#转向Linux/unix系统开发的菜鸟,中间无数次的焦头烂额只有自己心理明白,所幸我没有在大风大浪中凋零破碎,依然坚挺着我的学习之路。

  Unix操作系统结构:

  UNIX ,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、DennisRitchie和DouglasMcIlroy于1969年在AT&T的贝尔实验室开发。

严格意义上讲,可将操作系统定义为一种软件,可以直接控制硬件资源,提供程序运行环境,我们可以称之为内核。内核的接口可以称为系统调用,公用函数库建立在系统调用之上,应用软件既可以使用公用函数库也可以使用系统调用。shell是一种特殊的应用程序,它为运行其他应用程序提供接口。

广义上讲,操作系统也包括内核和其他的一些软件。

 文件系统和目录

 文件系统:

Unix文件系统是目录和文件组成的一种层次结构,目录的起点称为根(root) 使用./符号表示,目录(directory)是一个包含许多目录项的文件,逻辑上讲,可以认为i每一个目录都包含一个文件名,同时还包括文件的属性信息。文件的属性是指文件类型,文件大小,文件所有者,文件权限 以及文件最后修改时间。

 文件名:目录中各个名字称为文件名,斜线和空操作符不能出现在文件名中,在创建新的目录时候,系统会自动创建2个文件名 .和..

 路径名:一个或多个以斜线分割的文件名序列构成路径名,以斜线开头的称为绝对路径,否则称为相对路径

 18 #include <dirent.h>19 int main(int argc,char** argv)20 {  21      DIR   *dp;22      struct dirent *dirp;23     if(argc != 2)24     {25         err_quit("usage:is directory_name");26     }27     if(dp = opendir(argv[1] == NULL)28         err_sys("can`t open %s ",argv[1]);29     while((dirp = readdir(dp))!= NULL)30         printf("%s\n",dirp->d_namlen);31    32     closedir(dp);33     exit(0);34 }

工作目录:

Unix下每一个进程都有一个工作目录,或者可以称为当前工作目录,所有的相对路径都是从工作目录开始的。

输入和输出

标准输入,标准输出和标准出错,所有的shell都会为每一个新运行的进程打开三个文件描述,大多数shell都提供一种方式,使其中任何一个或者三个,例如:ls -> file.list 执行命令后,标准输出重新定向到file.list中

不用缓存的IO  

  函数open,read,write,lseek以及close提供不用缓存的I/O,这些都使用文件描述

 #define BUFFSIZE 409622           23 int main(void)24 {         25     int n;26     char buf[BUFFSIZE];27     while(n = read(STDOUT_FILENO,buf,BUFFSIZE) >0)28     {     29         if(write(STDIN_FILENO,buf,n) != n)30         {       31             err_sys("write err\n");32         }33         if(n < 0)34         {    35             err_sys("read_err\n");36         }37         exit(0);

 标准I/O

标准I/O函数体on个一种对不用缓冲的额函数的带缓冲的接口,使用标准I/O函数可以无需担心如何选取最佳的缓冲区大小,使用标准I/O函数的另外一个优点是简化了对输入行的处理,如Fgets函数读取完整的一行,而read函数读取指定的字节,标准I/O函数库提供了使我们能够控制该库所使用的缓冲风格函数。

 18 #include <stdio.h>19 int main(void)20 {    21     int c;22     while(c =getc(stdin) != EOF)23     {                      24         if(putc(c,stdout) == EOF)25             err_sys("output error");26         if(ferror(stdin))27             err_sys("input error");28         eixt(0);29     }   30 }

函数getc一次读取一个字符,然后函数putc将此字符标准输出

转载于:https://www.cnblogs.com/gaowenbin/archive/2012/04/26/2471516.html

unix高级环境编程-基础知识相关推荐

  1. 《UNIX高级环境编程》 -- apue.h

    在看<UNIX高级环境编程>这本书的时候,会遇到一个问题就是这个"apue.h",这个是作者为了编写代码方便封装了一个库,我们可以使用下面的方式解决这个问题,让我们的代 ...

  2. Unix高级环境编程 学习小结(一)

    这个系列的博客主要是针对Unix高级环境编程的内容做一个小结,针对的是面试中经常问道或者可能问到的问题. Unix体系结构: 环境的核心是内核,内核的接口被称为系统调用,公用函数库建立在系统调用接口只 ...

  3. Unix高级环境编程

    [07] Unix进程环境 ================================== 1. 进程终止     atexit()函数注册终止处理程序.     exit()或return语句 ...

  4. UNIX高级环境编程(9)进程控制(Process Control)- fork,vfork,僵尸进程,wait和waitpid...

    本章包含内容有: 创建新进程 程序执行(program execution) 进程终止(process termination) 进程的各种ID 1 进程标识符(Process Identifiers ...

  5. UNIX高级环境编程—第八章进程控制

    第八章-进程控制 1进程相关概念 1.1 程序和进程 1.2 并行和并发 1.3 进程控制块 1.4 进程标志 1.5进程状态(面试考) 2 创建进程 2.1 fork函数 2.2 ps命令和kill ...

  6. Unix高级环境编程—进程控制(一)

    一.函数fork #include<unistd.h> pid_t  fork(void)                                                 ...

  7. UNIX高级环境编程 第3章 文件IO

    3.3 函数open和openat open int open(const char *pathname, int flags);int open(const char *pathname, int ...

  8. UNIX高级环境编程 第11、12章 线程同步及属性

    第11.12章 线程及其控制 主要内容 互斥量 非递归互斥量 递归互斥量 读写锁 条件变量 自旋锁 屏障 互斥量 int pthread_mutex_init(pthread_mutex_t *res ...

  9. c #include如何找到文件_UNIX系统上程序员需要掌握的C编程环境的基础知识

    ​ 这是一份非常简短的文档,可以帮助你熟悉UNIX系统上C编程环境的基础知识.它不是面面俱到或特别详细,只是给你足够的知识让你继续学习. 关于编程的几点一般建议:如果想成为一名专业程序员,需要掌握的不 ...

最新文章

  1. 4,fail-fast错误机制
  2. Java线程怎样映射到操作系统线程
  3. 更改SQL 2005登录时的默认数据库
  4. mysql router手册_mysql router
  5. [改善Java代码]自由选择字符串拼接方法
  6. dubbo-admin管理平台搭建
  7. jsp mysql 连接池_Tomcat下JSP连接mysql连接池
  8. [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.解决办法
  9. 使用 lanmps 环境套件安装设置新站点 案例
  10. png图像保存为yuv格式以及yuv格式转为png
  11. C4D、3Dmax、maya区别
  12. android星星闪效果,H5使用canvas实现星星闪烁效果
  13. 基于某点评字体库的字体反爬
  14. 窗帘可以选择这6种效果不错的颜色 - 好佳居窗帘十大品牌
  15. 源码安装nginx 1.23.1
  16. ES8中对字符串补白的方式
  17. 【Golang 中的 type A = XXX 与 type A XXXX的区别】
  18. hive分区表之insert overwrite 注意事项
  19. Android Facebook登录,进来看就对了
  20. 牛刀云微信小程序完整项目教程

热门文章

  1. 《Python Cookbook 3rd》笔记(5.7):读写压缩文件
  2. VS Studio报错无法解析的外部符号 _imp_XXXXXXXXX
  3. 破解 IntelliJ IDEA 、免费注册方法、注册码
  4. mysql 查外键关联关系 (指定被引用表,查哪些表对其有外键引用)
  5. FreeSql (三十五)CodeFirst 自定义特性
  6. weblogic jprofile配置
  7. 不同的写法 其中 1 2 (试了下 没有效果 ,先记载这里把)
  8. element ui中dialog相关问题
  9. background-size在IE8不兼容问题
  10. R语言时间序列数据应用xts