UNIX笔记 第二天
一、进程的退出: 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笔记 第二天的更多相关文章
- 《javascript权威指南》读书笔记——第二篇
<javascript权威指南>读书笔记——第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字 ...
- Android群英传笔记——第二章:Android开发工具新接触
Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...
- 《DOM Scripting》学习笔记-——第二章 js语法
<Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...
- The Road to learn React书籍学习笔记(第二章)
The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...
- 深入理解 C 指针阅读笔记 -- 第二章
Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_ /*<深入理解C指针>学习笔记 -- 第二章*/ /* 内存泄露的两种形式 1.忘 ...
- [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”
[HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...
- STM32单片机应用与全案例实践 /stm32自学笔记 第二版 pdf
STM32单片机应用与全案例实践pdf https://pan.baidu.com/s/16WrivuLcHvLTwS__Zcwl6Q 4rj3 stm32自学笔记 第二版 pdf https://p ...
- STL源码分析读书笔记--第二章--空间配置器(allocator)
声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...
- js学习笔记第二篇
Js笔记整理 1.StringAPI a) 大小写转换:str.toUpperCase();str.toLowerCase(); b) 获取指定位置字符: Str[i]-- ...
随机推荐
- 上位机与三菱FX3U通过FX-232-BD通信
PLC侧设置: 和校验+协议4 读D200单字: 05 30 30 46 46 57 52 30 44 30 32 30 30 30 31 返回“201”:02 30 30 46 46 30 ...
- 微信小程序--录音
var app = getApp(), $ = require("../../utils/util.js"); const recorderManager = wx.getReco ...
- C#字符串和数组互转
string str = "a,b,c,d,e"; string[] strArray = str.Split(','); //字符串转数组 ...
- 网站改版应对google
客户要求修改网站,这会给我们带来问题!为了保留他的网站权重和关键字排名,我们必须在做网站修改工作之前分析他原来网站的连接结构和标题,这样我才能更好地保证他原来网站的整体权重不会有大的变化!以下是我们根 ...
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-4配置NTP服务
配置NTP服务.标准的做法是配置NTP服务器,但是这里为了方便就用简化的方式配置了. 这个在安装初期,不是必须的,只要保证各机器的时间同步就行,使用如下命令可以查看时间是否同步: [root@cdh1 ...
- Python基础-文件操作(七)
一.文件基本操作 1.open 打开模式: w模式 写模式write 文件不存在时会创建文件,如果文件已存在则会清空文件 r模式 读模式read 文件不存在就报错,存在则准备读取文件 a模式 追加模式 ...
- 51单片机学习笔记(郭天祥版)(9)——IIC、EEPROM
IIC是两根线,单总线,只有一根数据线,发送数据和读取收据都是一根线,像我们之前学的AD.DA都是许多线,许多线的话,这样做系统可以少浪费资源,少浪费控制IO口的资源,这种并行的处理速度快.所以线越多 ...
- 阿里云SLB负载均衡与使用SSL域名证书
阿里云SLB负载均衡与使用SSL证书 1.购买两台ECS服务器,这就是后台服务器,在这两个服务器上面部署你的网站,注意网站的端口要一样:比如都是 88. 2.在阿里云控制台的菜单里找到 负载均衡,创建 ...
- django settings配置文件ALLOWED_HOSTS
ALLOWED_HOSTS列表为了防止黑客入侵,只允许列表中的ip地址访问 填写上“*”可以使所有的网址都能访问Django项目了,项目测试的时候,可以这么做.这样就失去了保护
- applium安装过程中遇到的问题及解决方法。
1.安装appium server 之后, cmd输入appium-doctor,运行时提示'node'不是内部或外部的命令 一.提示'node'不是内部或外部命令,先按照下面步骤操作: 1.设置 ...