1 shell程序就是位于应用软件与系统调用之间的程序

  每个用户登录系统,系统就会为用户分配shell (用户的登录的口令文件 在  /etc/passwd
2 ls filename  运行原理
  敲入命令传入main函数参数
  根据argv[1]创建一个指向DIR的目录文件指针,并根据argv[1]创建目录
   在从该目录文件读取文件,返回一个指向struct_dirent类型的指针
   从而输出文件的名称
代码如下
#include <stdio.h>
#include <sys/types.h>

#include <dirent.h>

int main(int argc, char* argv[]){

     DIR               *dp;

     struct dirent *dirp;

if(argc != 2)     {

          printf("usage: ls directory_name");

          exit(0);

     }

     if((dp = opendir(argv[1]))==NULL){

          printf("can't open %s", argv[1]);

          exit(0);

     }

     else {

     while((dirp=readdir(dp)) != NULL )

          printf("%s\n", dirp->d_name);

      }

     closedir(dp);

     return 0;

}

3 进程ID
 getpid(),  getppid()
4 fork()          创建一个进程,返回值有两个,返回给父进程的是被创建进程的PID,返回给被创建的进程为0
例子从标准输入读取命令并执行
#include <sys/wait.h>

#include <stdio.h>

#include <string.h>

#include <unistd.h>

int main(void){

     char     buf[256];

     pid_t     pid;

     int          status;

printf("%% ");

     while(fgets(buf, 256, stdin) != 0){

          if(buf[strlen(buf)-1] == '\n')

               buf[strlen(buf)-1]=0;

if((pid=fork()) <0) {

                    printf("fork error");

               }

          else if(pid==0){

               execlp(buf, buf, (char*)0);

               exit(0);

          }

          if((pid=waitpid(pid, &status, 0))<0)

               printf("waitpid error");

          printf("%% ");

          }

     return 0;

}

调用execlp以执行从标准输入读入的命令,这就用新的程序文件替换了子进程原先执行执行的程序文件,
子进程调用execlp执行新程序文件,而父进程希望等待子进程终止,这一要求由调用watipid实现,其参数指定为要等等待进程的pid
5 线程ID 只在该线程所属的进程中有效
6 信号:是通知进程已发生某种情况的一种技术
进程处理信号的选择
1 忽略该信号
2 按系统默认方式处理
3 提供一个函数

UNIX基础知识--<<UNIX 环境编程>>读书笔记的更多相关文章

  1. 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识

    1 - UNIX基础知识 Github 地址 1. 操作系统 可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.通常将这种软件称为 内核 (kernel) .( Linux 是 GN ...

  2. UNIX环境高级编程--第一章 UNIX基础知识

    第一章 UNIX基础知识 1.2 UNIX体系结构   从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...

  3. python高级编程读书笔记(一)

    python高级编程读书笔记(一) python 高级编程读书笔记,记录一下基础和高级用法 python2和python3兼容处理 使用sys模块使程序python2和python3兼容 import ...

  4. C++Windows核心编程读书笔记

    转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔 ...

  5. Node.js高级编程读书笔记Outline

    Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程 ...

  6. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  7. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  8. Appium基础知识与环境搭建

    基础知识:  环境搭建: 1.安装jdk,配置java环境变量 (1)新建变量"JAVA_HOME",变量值"D:\Frameworks\Java\jdk1.8.0_18 ...

  9. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

随机推荐

  1. DataTable转化为List

    public List<T> ConvertToList<T>(DataTable dt) where T : new()        {            // 定义集 ...

  2. 【翻译自mos文章】v$undostat视图没有依照每10分钟进行更新,v$undostat仅仅有1行(one rows)

    v$undostat视图没有依照每10分钟进行更新,v$undostat仅仅有1行(one rows) 參考原文: The V$UNDOSTAT view is not getting updated ...

  3. javascript实现数据结构:广义表

    原文:javascript实现数据结构:广义表  广义表是线性表的推广.广泛用于人工智能的表处理语言Lisp,把广义表作为基本的数据结构. 广义表一般记作: LS = (a1, a2, ..., an ...

  4. 数据持久化之SP的优化—送工具类

    第一点:sp存储的是键值对 getSharedPreferences 第一个參数是你保存文件的名字,第个是保存的模式一般能够默觉得0 先看普通 使用SP 存储String类型字符串吧 SharedPr ...

  5. EasyUi TreeGrid封装

    礼物一:树型实体的抽象与封装 所谓树型实体,就是具有树型结构关系的实体,比如省.市.区.对于初学者,可能会创建三张表进行存储,有经验的开发者通过引入ParentId将设计简化为一张表,但是基于Pare ...

  6. IE6下jquery ajax报error的原因

    用jquery ajax()方法,在其他浏览都通过,IE7以上都通过,唯独在ie6不行. 我这边的解决方案是:必须保证ajax里面的所有数字为小写,ie6对大小写敏感. 错误: $.ajax({ ur ...

  7. 1_BLE nRF51822 UART 与 BLE转发

    去年Noridc出了集成蓝牙4.0并能开口说话24L01通信芯片,这部电影可以非常小包装.和低功耗.非常适合于可穿戴设备,然后挖了一个免费的手在不久的将来AK II,又没了一个Becon的板子.先玩了 ...

  8. ElasticSearch 与 Solr 的对比测试

    ElasticSearch 与 Solr 的对比测试 本文从两个方面对ElasticSearch和Solr进行对比,从关系型数据库中的导入速度和模糊查询的速度. 单机对比 1. Solr 发布了4.0 ...

  9. iOS--Swift开发中的单例设计模式

    最近在开发一个小的应用,遇到了一些Objective-c上面常用的单例模式,但是swift上面还是有一定区别的,反复倒来倒去发现不能按常理(正常的oc to swift的方式)出牌,因此搜索了一些帖子 ...

  10. 【 D3.js 入门系列 --- 9.6 】 生产的包图

    我的个人博客是:www.ourd3js.com csdn博客为:blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 打包图( Pack ).用于包括与被包括的关系,也表示各个对象的权重, ...