linux_c学习笔记

基本概念:
BSD(Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统
970年代由伯克利加州大学(University of California, Berkeley)开创。BSD用来代表由此派生出的各种套件集合。

DIR* opendir(char *)
struct dirent * readdir(DIR*)
fig3_2.c:create,write,lseek
fig3_4.c:read,write
某些系统提供路径名
/dev/stdin,/dev/stdout,/dev/stderr
这些等效于
/dev/fd/0,/dev/fd/1,/dev/fd/2
四。
stat、fstat 和lstat 函数
S_ISREG() 普通文件
S_ISDIR() 目录文件
S_ISCHR() 字符特殊文件
S_ISBLK() 块特殊文件
S_ISFIFO() 管道或FIFO
S_ISLNK() 符号连接( POSIX.1或SVR4无此类型)
S_ISSOCK() 套接字(POSIX.1或SVR4无此类型)
七。int main(int argc,char *argv[])
进程终止:main返回,exit(),_exit(),abort(),信号终止
_exit立即进入内核, exit则先执行一些清除处理
(包括调用执行各终止处理程序,关闭所有标准I / O流等),然后进入内核(exit会结束其他进程),比如会调用fclose关闭流
atexit()和exit()合用,exit()时,在程序终止前线执行所有用atexit()登记的函数,用atexit()登记的函数按照FIFO(先进后出)顺序调用
atexit
getenv
putenv
environ指针
共享库
存储空间布局:
只读正文段
初始化数据段
非初始化数据段
栈 递归
堆 废除实话市局顶何栈底之间
[img]http://dl.iteye.com/upload/attachment/337979/751a7e25-eb8d-30e6-889b-154c41762129.png[/img]
存储器分配:
malloc 指定字节数
calloc 指定个数
realloc 更改分配去长度,可能移动区域
free
alloca 调用序列与 m a l l o c相同,但是它是在当前函数的栈帧上分配存储空间,而不是在堆中,函数返回时,自动释放它所使用的栈帧(某写系统不支持)
7.9 环境变量
char *getenv(const char *name);
getenv
putenv
setnev
unsetenv
clearenv
7.10 setjmp和longjmp函数
int setjmp(jmp_buf env);
void longjmp(jmp_buf env,int val);
出错时跳回位置,会回滚原来的值,如果不想回滚
则用
volatile int sum;定义
cmd_add
getcwd
第八章:
ID 0 交换进程swapper,系统进程
/etc/init
/sbin/init
读/etc/rc*文件
进程ID 2 是页精灵进程(pagedaemon),此进程负责支持虚存系统的请页操作(内核进程)
个现存进程调用 f o r k函数是U N I X内核创建一个新进程的唯一方法(内核不能创建)
fork调用一次,但返回两次,子返0,父返子id
子进程调要你给getppid获得父进程的进程ID

execlp(file,arg0,..,0)
execvp(file,argv)

execl(path,arg0,..0)
execv(path,argv)

execle(path,arg0,..0,envp)
execve(path,argv,envp);

表8-1 检查w a i t和w a i t p i d所返回的终止状态的宏

WIFEXITED(status) 若为正常终止子进程返回的状态,则为真
WIFSIGNALED(status) 若为异常终止子进程返回的状态
WIFSTOPPED(status) 若为当前展厅子进程返回的状态,则为真

问题:父亲怎么等待儿子死掉,儿子怎么等待父亲死掉(有空就问问)
while(getppid() !=1)
s l e e p ( 1 ) ;
[img]http://dl.iteye.com/upload/attachment/344719/e696dc04-48dd-3a1d-9663-a1ca4984b6fb.jpg[/img]
8.12 system函数
system("date > file");
#include <stdlib.h>
int system(const char * cmdstring) ;
因为s y s t e m在其实现中调用了f o r k、e x e c和w a i t p i d

第十章:
信号是软件中断
SIGABRT是夭折
信号,当进程调用abort函数时产生这种信号。SIGALRM是闹钟信号,当由alarm函数设置的时
间已经超过后产生此信号
[img]http://dl.iteye.com/upload/attachment/344810/f13f50ad-ac02-331f-a5e6-fe6377fa8ef8.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/344814/2111eff6-8551-37cd-b544-cf931cad1be9.jpg[/img]
信号:


第14章
三种系统V IPC:消息队列、信号量以及共享存储器之间有很多相似之处。
每个内核中的I P C结构(消息队列、信号量或共享存储段)都用一个非负整数的标识符
( i d e n t i f i e r )加以引用
槽使用顺序号


第15章:
发送和接收文件描述符
int send_fd(int spipefd, int filedes) ;
int send_err(int spipefd, int status, const char *errmsg) ;
两个函数返回:若成功则为0,若出错则为- 1
int recv_fd(ints pipefd, ssize_t (* userfunc)(int, const void *, size_t));
返回:若成功则为文件描述符,若出错则< 0

在S V R 4之下,文件描述符用两个ioctl命令在一流管道中交换,这两个命令是: I _ S E N D F D
和I _ R E C V F D

open read write ioctl close
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值