unix c 06
文件操作
fcntl-> 复制文件描述符/取文件状态/文件锁
文件一系列函数-> access/chmod/truncate/...
目录操作
相关函数:mkdir/rmdir/telldir/chdir/getcwd/...
重点:opendir/readdir
进程:
1 察看进程的命令ps,两种用法:
Unix -> ps -ef (变相支持ps -aux,不直接支持)
可以用/usr/ucb/ps -aux
Linux -> ps -aux/ps -ef
杀进程,kill -9 进程id (必定杀死)
常见进程状态:
S 休眠状态
O 可运行状态
R 运行状态
T 挂起状态
Z 僵尸进程(已经结束但没有回收资源)
如果一个进程a启动了另外一个进程b,a叫父进程,b叫子进程。
2 父子进程的关系
2.1 父进程启动子进程后,父子进程同时运行。如果子进程先结束,会自动给父进程发信号,父进程回收子进程的相关资源。
2.2 如果父进程先结束,子进程变成孤儿进程。子进程会认init进程(1)为新的父进程。init也叫孤儿院
2.3 如果父进程没有收到子进程结束时发送的信号或没有及时处理该信号,子进程虽然已经结束,但资源没有回收,形成 僵尸进程。
3 系统用pid管理进程,每个进程都有当时唯一的进程id。已经结束的进程,它的pid过一段时间后可以重复使用(延时使用)。
取进程id的函数:
getpid() 取当前进程id
getppid() 取父进程id
getuid() 取实际用户id
geteuid() 取有效用户id
注:getuid()其实也是返回有效用户的id。
Linux/Unix中可以用su 切换用户。真实用户是登陆时的用户,有效用户就是当前生效的用户。
4 创建进程函数fork()
fork()通过复制父进程创建子进程。
fork()时,子进程会复制父进程的堆/栈/全局,但共享代码区(子进程不会重新执行fork之前的代码)。
fork()之前的代码只有父进程执行一次,fork()之后的代码父子进程分别执行一次。fork()函数代码会返回2次,父进程返回子进程的id,子进程返回0。
fork()之后父子进程谁先执行由操作系统算法决定,无法确保谁先执行。
fork()只复制文件描述符,不复制文件表。但fork之后定义的文件描述符会有两个文件表。
创建子进程的两种方式:
fork - 父进程的自我复制,可以一个代码段两个进程执行。
vfork - 父进程的自我否定(不复制任何东西),启动一个全新的子进程执行全新的代码。
fork不知道父子进程谁先运行,vfork一定是 子进程先运行。
进程的结束:
正常结束 - main函数执行return,exit,_exit/_Exit
非正常结束 - 信号
exit和_exit/_Exit的区别:
exit不是马上退出,会检测是否有其他函数需要执行。用atexit注册的函数会被执行。
_exit/_Exit在Unix中是一回事,会立即退出。
unix c 06的更多相关文章
- UNIX系统的显示时间何时会到达尽头
本文分为三个小块: 一.UNIX系统中时间的存储形式: 二. time_t 的最大值是多少: 三. 将time_t 的最大值转化为真实世界的时间: #---------------------# # ...
- UNIX Time 时间戳 与 北京时间 相互转换
typedef struct t_xtime { int year; int month; int day; int hour; int minute; int second; } _xtime ; ...
- springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...
- js unix时间戳转换
一.unix时间戳转普通时间: var unixtime=1358932051; var unixTimestamp = new Date(unixtime* 1000); commonTime = ...
- Unix command 积累
UNIX is a multi-user multitasking-optimized operating system that can run on various hardware platfo ...
- Oracle DBA 的常用Unix参考手册(二)
9.AIX下显示CPU数量 # lsdev -C|grep Process|wc -l10.Solaris下显示CPU数量# psrinfo -v|grep "Status of pr ...
- Oracle DBA 的常用Unix参考手册(一)
作为一名Oracle DBA,在所难免要接触Unix,但是Unix本身又是极其复杂的,想要深刻掌握同样很不容易.那么到底我们该怎么入手呢?Donald K Burleson 的<Unix for ...
- Unix System Overview
一.Unix 体系结构 由上图可以看出,内核居于最里层,Shell,Libary routines,以及Application通过系统调用(system calls)访问内核提供的功能.注意系统调用与 ...
- Linux/Unix下设置定时任务
Unix系统提供了cron和at命令,使系统和用户可以定时运行一定的程序,而不需手工启动. 使用cron用于周期性的执行一个命令,为了使用它,必须编辑crontab文件.系统缺省的/etc/cront ...
随机推荐
- vijos1782借教室
描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自然希望 ...
- Centos中安装Sublime编辑器
Centos中安装Sublime编辑器 1.从官网下载相应操作系统的下的安装包(http://www.sublimetext.com/2),这里下的是linux下的安装包 2.解压安装包,并将其放在/ ...
- 分页标签:pager-taglib使用指南
一简介, Pager-taglib,支持多种风格的分页显示.实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多种不一样的分页页面,风格各异,她自带 ...
- node js npm 和 cnpm的使用
安装nodejs后会有npm命令 npm 可以安装node插件 cnpm使用的是淘宝网的镜像http://npm.taobao.org 安装命令提示符执行:npm install cnpm -g -- ...
- MyEclipse默认编码为GBK,修改为UTF8的方法
MyEclipse 默认编码居然是GBK,js文件默认编码是ISO-....怎么可以这样呢? 都修改成UTF8的方法: 1.windows->Preferences...打开"首选项& ...
- LRU Cache的简单c++实现
什么是 LRU LRU Cache是一个Cache的置换算法,含义是“最近最少使用”,把满足“最近最少使用”的数据从Cache中剔除出去,并且保证Cache中第一个数据是最近刚刚访问的,因为这样的数据 ...
- hdu-1573 Robot Motion
Robot Motion Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10219 Accepted: 4977 Des ...
- 浅谈GitLab与Git
前言:先解释下关于库的认识. Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一.新增项目(远程仓库) 在GitLa ...
- linux 终止用户会话
第一步使用 tty 命令 查看自己会话id:本例中会话id为1[root@localhost ~]# tty/dev/pts/1[root@localhost ~]# 第二步 使用 w 命令 查看当前 ...
- centos打开3306端口
centos默认是关闭了3306端口的,外网通过3306端口不能访问数据库,这时需呀打开3306端口1.打开端口: /sbin/iptables -I INPUT -p tcp --dport 330 ...