linux系统

一 文件操作

stat() ;

fcntl();

truncate();

link();

symlink();

readlink();

unlink();

创建临时文件 先创建一个文件,然后unlink() ,当关闭该文件时,文件资源也被释放。系统使用rm命令时,其使用的函数时unlink(),当一个文件的硬链接减为0时,该文件的资源也被释放。

rename();文件重命名

chdir(),fchdir(); 改变文件目录

getcwd(); 获取当前目录,命令pwd调用该函数实现

pathconf:测试当前环境属性的最大值

#include

long fpathconf(int fd, int name);

long pathconf(const char *path, int name);

二 目录操作

每个目录占用空间大小为4096字节

mkdir();创建一个目录

rmdir();删除一个目录

opendir();打开一个目录

#include

#include

DIR *opendir(const char *name);

DIR *fdopendir(int fd);

readdir(); 每次返回一条记录项,DIR*指针指向下一条记录

telldir(); 返回目录指针当前在什么位置

seekdir();设置目录指针指向的位置

closedir(); 关闭打开目录

练习:递归读取某个目录的所有文件

 

三 进程ID

PCB

每个进程都有资源上限值,查看方式如下:

ulimit  –a  查看进程限制 详细看 /proc/self/limits

物理地址 虚拟地址

进程只能读写用户空间   1page = 4096B

环境变量 env   extern char **environ;

环境变量操作 setenv ();getenv(); unsetenv();

进程的运行状态:创建,就绪,运行,睡眠,停止

 

四 exec函数族:

extern char **environ;

int execl(const char *path, const char *arg, .../* (char  *) NULL */);

int execlp(const char *file, const char *arg, .../* (char  *) NULL */);

int execle(const char *path, const char *arg, .../*, (char *) NULL, char * const envp[] */);

int execv(const char *path, char *const argv[]);

int execvp(const char *file, char *const argv[]);

int execvpe(const char *file, char *const argv[],char *const envp[]);

l 列表 v 向量二维数组,e 环境变量,p 环境变量目录。

 

五 wait()

作用:用于父进程获取子进程的退出状态。

pit_t  wait(int * status);  函数返回退出子进程ID号,status表示退出时状态

pit_t  waitpid(pid_t pid,int *status,int option);

<-1 回收指定进程组内的任意子进程

-1  回收任意子进程

0 回收和当前调用waitpid一个组的所有子进程

>0 回收指定ID的子进程

 

僵尸进程:子进程退出,父进程没有回收子进程资源(PCB),形成僵尸状态。

孤儿进程:父进程先于子进程退出,这是init进程将收养子进程。

 

无名管道:pipe()

         在使用管道时,应注意如下这四种情况:

         1 写关闭,读端读取数据,将返回0,相当于读到EOF。

         2 写端未关闭,但没数据,读端去读取数据,将阻塞。

         3 读端关闭,写端写数据,产生SIGPIPE信号,写进程时默认情况下会终止进程。

         4 读端未读写端数据,写端再次写,将阻塞。

fpathconf();  查询与文件相关最大限制的属性。

设置管道非阻塞。

有名管道:fifo

创建管道:mknode  mkfifo 

 

五 共享内存

法一(mmap 与文件相关联)

void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);

参数:addr 映射文件的起始地址  length映射文件的大小  prot读写权限  flags MAP_SHARED(共享)  MAP_PRIVATE(私有)  offset(偏移地址)  

返回值:共享内存的起始地址

int munmap(void *addr, size_t length);

 

法二(shm  在内存中开辟一共享区域)

int shmget(key_t key, size_t size, int shmflg);  //创建共享内存

void *shmat(int shmid, const void *shmaddr, int shmflg); //将内存连接到进程地址空间

void *shmat(int shmid, const void *shmaddr, int shmflg); //将内存从进程中分离

int shmctl(int shmid, int cmd, struct shmid_ds *buf);  //共享内存的控制函数

 

你可能感兴趣的:(linux应用)