**Hàm hệ thống** là những hàm được thực thi bên trong nhân hệ điều hành(system call). Có hơn 50 hàm hệ thống cơ bản, nhưng các nhân như Linux, BSD thì có tới hơn 200 hàm hệ thống.

Tổng quát
---------

Hạt nhân hệ điều hành như một dịch vụ nó các ứng dụng gọi đến và yêu cầu thông qua các hàm hệ thống. Tất cả tương tác của chương trình đến hệ tập tin, thiết bị, bộ nhớ, vào/ra chỉ có một hướng là yêu cầu đến hạt nhân thông qua hàm hệ thống.

Danh sách hàm hệ thống
----------------------

Danh sách hàm hệ thống này tương thích với chuẩn POSIX. Có một số cấu trúc không nằm ở đây xin tham khảo các bài về header hệ thống.

```
/\*process management\*/ 
pid\_t fork(void); 
pid\_t waitpid(pid\_t pid,size\_t \*status,size\_t options);
size\_t execve(const char \*name,char \*const \*argv,char \*const\* envp);
void exit(size\_t status);
pid\_t getpid();
pid\_t getppid();
/\*signals\*/
size\_t sigaction(size\_t sig,void \*(\*fpt)(void \*));<br />
size\_t sigreturn();
size\_t sigprocmask();
size\_t sigpending();
size\_t sigsuspend();
size\_t pause();
size\_t alarm(time\_t seconds);
size\_t kill(pid\_t pid,size\_t sig);
/\*file system management\*/
size\_t create(const char \*name,mode\_t mod);
size\_t open(const char \*name,size\_t flag,mode\_t mode);
size\_t read(size\_t fd,void \*buf,size\_t nbytes);
size\_t write(size\_t fd,const void \*buf,size\_t nbytes);
size\_t close(size\_t fd);
off\_t lseek(size\_t fd,off\_t pos,size\_t how);
size\_t stat(const char \*name,struct stat \*buf);
size\_t fstat(size\_t fd,struct stat \*buf);
size\_t access(const char \*nam,int a\_mode);
size\_t rename(const char \*old\_name,const char \*new\_name);
size\_t dump(size\_t fd);
size\_t ioctl(size\_t fd,size\_t cmd,size\_t option);
size\_t fcntl(size\_t fd,size\_t cmd,size\_t option);
size\_t pipe(size\_t \*fd);
size\_t mknod(const char \*name,mode\_t mode,dev\_t dev);
size\_t mkdir(const char \*name,mode\_t mode);
size\_t rmdir(const char \*name);
size\_t link(const char \*old\_name,const char \*new\_name);
size\_t unlink(const char \*name);
size\_t sync();
size\_t chdir(const char \*name);
size\_t chroot(const char \*name);
size\_t fchdir(size\_t fd);
size\_t faccess(size\_t fd,size\_t amode);
size\_t getcwd(const char \*buf,size\_t size);
size\_t mount(const char \*dev\_name,const char \*dir\_name,const char \*type,unsigned long flags,const void \*data);
size\_t umount(const char \*dir\_name,unsigned long flags);
size\_t getdents(size\_t fd,struct dirents \*dents,size\_t counts);
/\*Protection\*/<br />
size\_t chmod(const char \*name,mode\_t mode);
size\_t chown(const char \*name,uid\_t uid,gid\_t gid);
uid\_t getuid();
gid\_t getgid();
size\_t setuid(uid\_t uid);
size\_t setgid(gid\_t gid);
mode\_t umask(mode\_t mode);
size\_t fchmod(size\_t fd,mode\_t mode);
size\_t fchown(size\_t fd,uid\_t uid,gid\_t gid);
/\*time management\*/
time\_t time(time\_t \*ret); /\*Get the elapsed time since Jan 1,1970\*/
size\_t stime(time\_t when); /\*set time since Jan 1,1970\*/
size\_t utime(const char \*name,time\_t last); /\*set last access for file\*/
size\_t times(struct tm \*tbuf);
size\_t sleep(time\_t seconds); 
size\_t nanosleep(struct timespec \*rqtp,struct timespec \*rmtp);

```

Xem thêm
--------

* Hạt nhân
* Hệ điều hành
* stat.h
* dirent.h

Tham khảo
---------