linux内核函数笔记(一)

本文介绍了进程管理和文件操作的基础函数,包括进程创建、控制、同步及文件的读写、复制等功能。详细解释了如fork、exec、wait等进程相关函数及open、close、read等文件操作函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程管理函数

pid_t getpid();返回当前进程的标识号PID

pid_t fork();创建一个进程。

pid_t vfork();与fork()相似,vfork保证子进程先运行,在它调用exec或exit之后父进程才可能被调用。

exec函数族:用于把一个新程序载入调用进程的内存空间,来改变进程的执行代码,从而形成新进程。execve才是真正意义上的系统调

用,其他的都是在此基础上的库函数。

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

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

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

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

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

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

pid_t wait(int *status);为了实现进程间的同步,让进程进入休眠状态,知道被唤醒。

pid_t waitpid(pid_t pid,int *status,int options);与wait相似,但区别是它要等待指定的pid进程退出。

options:WNOHANG,要求如果没有子进程退出就立即返回。

             WUNTRACED,对已经停止但本不用报告状态的子进程,该调用也从等待中返回并报告状态。

unsigned int sleep(unsigned int seconds);使进程挂起指定的时间。

clock_k times(struct tms *buf);获取当前进程的时间信息。

exit()和_exit()

void _exit(int status);直接使进程停止运行,清除其在使用的内存空间,并销毁其在内核中的各种数据结构

exit在此基础上加了其他一些工序:检查文件打开情况,把文件缓冲区中的内容写回文件。

 

文件操作函数

int open(const char *pathname,int flags);

int open(const char *pathname,int flags,...,mode_t mode);

 

int create(const char *pathname,mode_t mode);

 

int close(int filedes);

 

size_t read(int filedes,void *buff,size_t nbytes);

 

ssize_t write(int filedes,void *buff,size_t nbytes);

 

off_t lseek(int filedes,off_t offset,int whence);

 

int dup(int oldfd);复制一个现存的文件描述符

int dup2(int oldfd,int newfd);同上

 

int ioctl(int d,int request,...);用来控制设备

 

文件属性

int access(const char *pathname,int mode);获得用户对文件的访问许可

 

int stat(const char *file_name,struct stat *buf);获取文件状态信息

int fstat(int filedes,struct stat *buf);

int lstat(const char *file_name,struct stat *buf);

 

目录文件操作

void rewinddir(DIR *dir);

void seekdir(DIR *dir,off_t offset);

off_t telldir(DIR *dir):

 

DIR *opendir(const char *name);

struct dirent *readdir(DIR *dir);

int closedir(DIR *dir);

 

int mkdir(const char *path,mode_t mode);

int rmdir(const char *path,mode_t mode);

 

管道文件

int pipe(int filedes[2]);

 

int mkfifo(const char *pathname,mode_t mode);

 

时间函数

time_t time(time_t *t);

 

int gettimeofday(struct timeval *tv,struct timezone *tz);

 

int getitimer(int which,struct itimerval *value);

int setitimer(int which,struct itimerval *newvalue);

 

信号处理函数

int kill(pid_t pid,int sig);

int raise(int sig);

 

void abort(void);

 

unsigned int alarm(unsigned int seconds);

 

int setitmer(int which,const struct itimerval *value,struct itimerval *ovalue);

 

int sigqueue(pid_t pid,int sig,const union sigval val);

 

int pause(void);

 

void (*signal (int signum,void (*handle)(int)))(int);

 

int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact);

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值