自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 glibc源码分析之用户管理

getuid函数由脚本生成

2017-08-23 20:01:13 377

原创 glibc源码分析之getpriority,setpriority,nice

glibc提供了getpriority,setpriority,nice函数用于获取或者设置进程的优先级。getpriority函数定义在sysdeps/unix/sysv/linux/getpriority.c文件中。#define PZERO 20int__getpriority (enum __priority_which which, id_t who){ int res; res

2017-08-23 19:16:41 841

原创 进程优先级之setpriority系统调用

unix提供了setpriority系统调用用于设置进程,进程组,用户进程的优先级。long setpriority(int which,int who,int niceval)参数which是PRIO_PROCESS,PRIO_PGRP,PRIO_USER中的一个。#define PRIO_PROCESS 0#define PRIO_PGRP 1#define PRIO_USER

2017-08-22 19:55:13 5374

原创 进程优先级之getpriority系统调用

unix提供了getpriority系统调用用于获取当前进程及其他进程的优先级。long getpriority(int which,int who)getpriority系统调用用于返回进程,进程组,用户进程的进程优先级。参数which是PRIO_PROCESS,PRIO_PGRP,PRIO_USER中的一个。#define PRIO_PROCESS 0#define PRIO_PGRP

2017-08-22 19:37:47 3699

原创 进程优先级之nice系统调用

unix提供了nice系统调用用于修改当前进程的优先级。long nice(int inc)nice系统调用增加inc到当前进程的nice值。(nice值越大,运行的优先级越低)只有超级用户可以设置inc为负值。如果系统调用执行成功,返回0。如果执行失败,返回-1,错误号放入errno中。

2017-08-22 18:48:23 840

原创 linux系统调用列表

进程进程标识符 系统调用名 系统调用功能 getpid 获取进程标识符 getppid 获取父进程标识符进程优先级 系统调用名 系统调用功能 nice 设置当前进程优先级 getpriority 获取进程优先级 setpriority 设置进程优先级

2017-08-22 18:28:21 314

原创 glibc源码分析之chdir,fchdir,chroot,getcwd

umask函数用于设置创建文件的掩码。它是由脚本生成的:#define SYSCALL_NAME umask#define SYSCALL_NARGS 1#define SYSCALL_SYMBOL __umask#define SYSCALL_CANCELLABLE 0#define SYSCALL_NOERRNO 1#define SYSCALL_ERRVAL 0#include <

2017-08-20 15:33:03 850

原创 glibc源码分析之普通文件读写

glibc中关于普通文件读写的函数有open,close,read,write,lseek,lseek64。它们分别封装了open,close,read,write,lseek,_llseek系统调用。 lseek用于在32位长度的文件中跳转,_llseek用于在64位长度的文件中跳转。 open函数的封装在前文中已经介绍了。close函数定义在sysdeps/unix/sysv/linux/c

2017-08-18 19:23:03 2206

原创 glibc源码分析之statfs系列函数

glibc中与statfs函数相关的函数有4个,它们分别是:statfs,fstatfs,statfs64,fstatfs64。它们都是系统调用的封装函数。 关于statfs的系统调用有statfs(99),fstatfs(100),statfs64(268),fstatfs64(269)。statfs,fstatfs用于获取文件系统属性,属性是32位的。statfs64,fstatfs64用于获

2017-08-18 18:54:07 2056

原创 glibc源码分析之rename函数

glibc提供了rename系统调用用于修改文件路径。rename函数定义在sysdeps/unix/sysv/linux/rename.c文件中。intrename (const char *old, const char *new){ return INLINE_SYSCALL_CALL (rename, old, new);}rename 函数调用了rename系统调用。

2017-08-18 18:32:20 886

原创 glibc源码分析之文件的创建与删除

glibc中与文件创建与删除有关的函数有creat,unlink,

2017-08-16 19:53:46 780

原创 glibc源码分析之access函数

access函数用于检查文件的权限。它封装了access系统调用。 access源码定义在sysdeps/unix/sysv/linux/access.c文件中。int__access (const char *file, int type){ return INLINE_SYSCALL_CALL (access, file, type);}weak_alias (__access,

2017-08-16 19:09:26 991

原创 glibc源码分析之utime系列函数

glibc中关于utime的函数有utime,utimes。它们都是系统调用的封装函数。 utime函数由脚本生成。生成的.S文件的内容为:#define SYSCALL_NAME utime#define SYSCALL_NARGS 2#define SYSCALL_SYMBOL utime#define SYSCALL_CANCELLABLE 0#define SYSCALL_NOER

2017-08-16 19:00:47 367

原创 glibc源码分析之chown系列函数

glibc中关于chown的函数有3个,它们分别是chown,fchown,lchown。它们都是系统调用的封装函数。 关于chown的系统调用有6个,它们分别是lchown(16),fchown(95),chown(182),lchown32(198),fchown32(207),chown32(212)。它们都是用于改变文件的用户ID和组用户ID。chown系列系统调用只能将用户ID和组用户I

2017-08-16 18:49:46 676

原创 glibc源码分析之truncate系列函数

glibc中关于truncate的函数有4个,它们分别是truncate,ftruncate,truncate64,ftruncate64。 truncate和ftruncate可以截断文件为32位长度,truncate64和ftruncate64可以截断文件为64位长度。truncate函数的源码在sysdeps/unix/sysv/linux/truncate.c文件中。int__trunc

2017-08-15 20:07:55 855

原创 glibc源码分析之chmod系列函数

glibc中关于chmod系列的函数有chmod,fchmod。它们都是用于改变文件的属性。 在glibc中chmod和fchmod两个函数都是使用脚本生成的系统调用的封装函数。 它们生成的.S文件内容分别为:#define SYSCALL_NAME chmod#define SYSCALL_NARGS 2#define SYSCALL_SYMBOL __chmod#define SYSC

2017-08-15 19:39:09 841

原创 调用stat64系列函数

前文是对stat64系列函数的源码分析。下面将介绍如何在实际情况下调用stat64系列函数。#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int main(int argc,char **argv){ struct stat64 st64; stat64("/home",&st64);

2017-08-15 19:26:43 7701

原创 glibc源码分析之stat64系列函数

前文介绍了stat系列函数的源码实现,本文将向大家介绍stat64系列函数的源码实现。 stat64系列函数包括stat64,fstat64,lstat64。由于stat系列函数只能获取32位长度的文件的属性,所以glibc又提供了stat64系列函数,用于获取64位长度的文件的属性。 stat64的源码如下:#undef stat64intattribute_hiddenstat64 (

2017-08-15 19:11:07 3258 1

原创 glibc源码分析之stat系列函数

glibc中stat系列函数有stat,fstat,lstat。它们都是系统调用的封装函数。 关于stat的系统调用有oldstat(18),oldfstat(28),oldlstat(84),stat(106),lstat(107),fstat(108),stat64(195),lstat64(196),fstat64(197)。oldstat系列系统调用被stat系列系统调用替代了。stat系

2017-08-14 19:58:15 4124

原创 glibc源码分析之系统调用(二)

前文已经向大家介绍了用脚本封装系统调用的方法。在本文中,我将向大家介绍使用.c文件封装系统调用的方法。使用.c文件封装系统调用一般出于以下两个原因:一,系统调用已过时,可以使用新的系统调用替换旧的系统调用。系统调用的语义不变。二,封装后的函数改变了系统调用的语义。stat系统调用的封装便是原因一的一个例子。stat系统调用是106号系统调用。使用stat系统调用可以获取文件的属性,但是获取的属性值都

2017-08-13 19:29:24 916

原创 glibc源码分析之系统调用(一)

在编写本文时,glibc的最新版本是glibc-2.26。本文所有描述都是基于glibc-2.26。 系统调用 系统调用是程序员接触到的最底层的构建程序的组件。它们由内核实现,提供给程序调用。用户按照其调用规则可以实现调用。 glibc的封装方式 glibc使用了两种方式来封装系统调用。一种是由脚本生成。一种是.c文件。 使用.c文件封装系统调用,是因为封装过程比较复杂,除了按系统调用的调

2017-08-10 20:22:41 2757 2

原创 进程信息之getrusage系统调用

unix提供了getrusage系统调用获取进程的资源信息。long getrusage(int who, struct rusage *ru);struct rusage { struct timeval ru_utime; /* user time used 用户态下程序运行时间*/ struct timeval ru_stime; /* system time

2017-08-08 19:56:38 682

原创 进程信息之times系统调用

unix提供了times系统调用用于获取进程及其子进程的运行时间。clock_t sys_times(struct tms* tbuf);struct tms { clock_t tms_utime; clock_t tms_stime; clock_t tms_cutime; clock_t tms_cstime;};(32位系统下clock_t为long类型)t

2017-08-08 19:29:32 722

linux系统调用

介绍linux系统调用,主要是0.01内核的代码

2015-10-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除