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. 划分数 (DP)

    输入: n=4 m=3 M=10000 输出: 4 (1+1+2=1+3=2+2=4) 复杂度(nm) int n,m; int a[MAX]; int dp[MAX][MAX]; //数组 void ...

  2. [ACM] hdu 1285 确定比赛 (拓扑排序)

    确定比赛 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. crontab 里不能运行expdp

    编辑脚本 xxx.sh #!/bin/shrq=`date +%Y%m%d`filename="test$rq"expdp system/*** directory=expdump ...

  4. SimpleInjector与MVC4集成,与Web Api集成,以及通过属性注入演示

    SimpleInjector与MVC4集成,与Web Api集成,以及通过属性注入演示   1,与MVC集成 见http://simpleinjector.codeplex.com/wikipage? ...

  5. maven_基本配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. 【百度地图API】如何批量转换为百度经纬度

    原文:[百度地图API]如何批量转换为百度经纬度 摘要: 百度地图API的官网上提供了常用坐标转换的示例.但是,一次只能转换一个,真的非常麻烦!!这里结合了官方的示例,自制一个批量转换工具,供大家参考 ...

  7. jAVA 得到Map价值

    jAVA 获取Map中的值 Map<String, String> map=new HashMap<String, String>(); map.put("name& ...

  8. Wowza流媒体Live直播和VOD点播配置实战

    Wowza是当今可以说最流行的流媒体服务器之一,近来因为需要搭建相应的服务器,但又不想用camera等作真实的直播,所以想办法用媒体文件转换成直播流再提供给Wowza进行直播.这里把该设置步骤以及设计 ...

  9. jQuery 表格

    jQuery 表格插件汇总     本文搜集了大量 jQuery 表格插件,帮助 Web 设计者更好地驾御 HTML 表格,你可以对表格进行横向和竖向排序,设置固定表头,对表格进行搜索,对大表格进行分 ...

  10. SQL点滴6—“微软不认识闰年2月29日”&字符"N"的作用

    原文:SQL点滴6-"微软不认识闰年2月29日"&字符"N"的作用 http://www.cnbeta.com/articles/50580.htm这个 ...