一、进程的退出: exit(3)  _exit(2)  atexit(3)  onexit(3)

二、进程资源的回收:wait(2) waitpid(2)

三、加载新的可执行程序:  exec函数族

execve:创建一个新的进程 代替调用进程。进程的pid保持不变。

bash 有内部命令(调用函数,一个可执行程序)和外部命令(和bash不是一个可执行程序)之分。

bash 调用fork产生子进程,在子地址空间里加载新的印象。

如何查看一个命令是哪部命令还是外部命令?type 命令

[orange@chengziiandeAir:$ type cd

cd is a shell builtin

使用system(3)启动新的可执行程序

system和exec的区别

bash——a.out——a.out——sh——myt

bash——a.out——myt

 四、环境变量

1.打印环境变量,bash 中是env命令。

 #include<stdio.h>

 int main(void){
extern char ** environ;
int i =; while(*(environ+)!=NULL){
printf("%s\n",*(environ+i));
i++ ;
}
return ;
}

c语言打印出环境变量

main 函数的最完整的格式:

    int main (int argc,const char *  argv[ ], char * envp[ ] ) ; //从命令行传参数

int main (void) //就不用去检测后面的参数了

        从 start调用main之前,就已经有这个栈 ,参数列表的内容就已经在栈里面了。调用的时候直接使用就行了。

 #include<stdio.h>

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

   int i=;
for(;envp[]!=NULL;i++){
printf("%s\n",envp[i] ) ; } return ; }

main的第三个参数

2.操作环境变量的函数

getenv(3) 获取环境变量的值

头文件:#include<stdlib.h>

表达式:char * getenv( const char * name);

参数:  名字

返回值: returns a pointer to the value in the environment,or NULL(if there is  no match);

     返回环境变量值的首地址。

 #include<stdio.h>
#include<stdlib.h> int main(void){ printf(" %s\n",getenv("UID) ); return ;
}

putenv  (3) 改变或者增加一个环境变量的值  

头文件: #include<stdlib.h>

表达式:int putenv(char *string)

参数:string: name=value

返回值:0代表成功

注意:用env看不到,用a.out能看得到。因为是增加到自己所在的进程中去的。

setenv

putenv("name=orange");

setenv("name","orange",0);  //0:已有就不会改变 ; 1:已有也要改变

unsetenv("name");

clearenv();

五、文件输出重定向

 #include<stdio.h>

 int main(void){
int ch;
if(ch=getchar()) !EOF) //文件的尾部; control d= EOF
//getchar相等于 getc(stdin)
putchar(topper(ch)) ; //转换字符为大写
//把0关闭,再打开一个文件时,最小的文件描述符被使用
return ;
} ------------------------------------------------
int main(int arc,char * argv[]){
int fd; fd=open(argv[],O_REONLY);
if(fd==-){
perror("open");
return ;
}
dup2(fd,STDIN_FILENO);
close(fd);
return ;
excel("./upper","upper",NULL); }

本来为从键盘中读,变为从文件里读。

六、其他

文件夹的操作:opendir/closedir/readdir

文件重定向的实现原理:dup/dup2

文件锁:fcntl(2)

库函数和系统调用的关系:缓冲文件和非缓冲文件

定时器:

进程:内存中的代码和数据。每个进程都有自己的pid和pcb。

所有的用户级进程形成了一棵树,所有的用户级进程形成了一棵树。如何查看这颗树?pstree, init(pid是1号)是用户级进程的第一个进程。

使用 系统调用fork(2)创建新进程

    

如何查看进程的相关信息 ps -aux

线程:执行代码的过程。

缺省的情况下,进程的主线程的线程过程函数就是main函数。

main 函数的返回值即进程的退出码。

孤儿进程:

信号:

信号函数:

信号屏蔽:

可靠信号和不可靠信号:

pid:

计时信息:

UNIX笔记 第二天的更多相关文章

  1. 《javascript权威指南》读书笔记——第二篇

    <javascript权威指南>读书笔记——第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字 ...

  2. Android群英传笔记——第二章:Android开发工具新接触

    Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...

  3. 《DOM Scripting》学习笔记-——第二章 js语法

    <Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...

  4. The Road to learn React书籍学习笔记(第二章)

    The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...

  5. 深入理解 C 指针阅读笔记 -- 第二章

    Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_ /*<深入理解C指针>学习笔记 -- 第二章*/ /* 内存泄露的两种形式 1.忘 ...

  6. [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”

    [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...

  7. STM32单片机应用与全案例实践 /stm32自学笔记 第二版 pdf

    STM32单片机应用与全案例实践pdf https://pan.baidu.com/s/16WrivuLcHvLTwS__Zcwl6Q 4rj3 stm32自学笔记 第二版 pdf https://p ...

  8. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

  9. js学习笔记第二篇

    Js笔记整理 1.StringAPI a)        大小写转换:str.toUpperCase();str.toLowerCase(); b)        获取指定位置字符: Str[i]-- ...

随机推荐

  1. Tomcat Server处理一个http请求的过程

    Tomcat Server处理一个http请求的过程 假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp 1) 请求被发送到本机端口8080 ...

  2. nginx 做数据仓库时,location 404 Not Found,发现找不到要用的数据报:Not Found

    背景:  获得远程机器某个目录下的数据文件 方案:使用Nginx配置 1./home/ftp/www/ 下面有images 文件夹,为了访问images下面文件,配置Nginx如下: location ...

  3. linux 下导出oracle数据库

    #变更用户su - oracle <<EOF#添加用户名/密码,目标文件地址和文件名 ,保存记录日志地址/文件名  full=y表示数据库全部导出,默认导出连接数据库的用户数据库对象 ex ...

  4. Java 定时任务的几种实现方式

    JAVA实现定时任务的几种方式 @(JAVA)[spring|quartz|定时器]  近期项目开发中需要动态的添加定时任务,比如在某个活动结束时,自动生成获奖名单,导出excel等,此类任务由于活动 ...

  5. j2EE基础知识

    感觉应付面试足够了 一.基本概念 1.1 WEB开发的相关知识 WEB用于表示Internet主机上供外界访问的资源. Intrenet上供外界访问Web资源分为 静态web资源:web页面中供人们浏 ...

  6. spring cloud Ribbon

    参考:https://www.jianshu.com/p/1bd66db5dc46 Ribbon 是什么 spring cloud ribbon 是一个基于HTTP 和 TCP 的客户端负载均衡工具, ...

  7. Jquery+H5验证数据(不是表单验证啊 )

    啥也不说了 直接上代码 1.我将所有需要验证的控件都加上了   required(类名自己定吧没啥讲究)  class 2.所有的控件都加上了 data-vname的H5自定义属性(名称自个定义吧) ...

  8. model 字段参数 choice

    class Banner(NewsBase): ''' 轮播图 ''' PRI_CHOICES = [ # 优先级的限制选择范围 (1,'第一级'), (2,'第二级'), (3,'第三级'), (4 ...

  9. df命令,du命令,磁盘分区

    df 命令 功能:用来检查linux的文件系统的磁盘空间占用情况 1. df -h 2. 以innode节点数量显示磁盘空间占用情况 df -ih 3. 列出文件系统类型 df -Th du 命令 功 ...

  10. 网络通信实验(1)STM32F4 以太网简介

    STM32F4 以太网简介 STM32F407 芯片自带以太网模块,该模块包括带专用 DMA 控制器的 MAC 802.3(介质访问控制)控制器,支持介质独立接口 (MII) 和简化介质独立接口 (R ...