perrynzhou

专注于系统组件研发

0%

Linux系统调调用

基本介绍

系统调用例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <time.h>
int main(void) {
time_t tt;
struct tm *t;
//time系统调用非常方便
tt = time(NULL);
//内嵌汇编替换time系统调用
asm volatile (
//清空ebx寄存器
"mov $0,%%ebx\n\t"
//系统调用一般是通过eax保存系统调用号,time在32位系统中调用号为13,因此传递13到eax寄存器
"mov $0xd,%%eax\n\t"
//调用int 0x80指令,陷入内核态,进行系统调用
"int $0x80\n\t"
//把结果eax寄存器结果保存在变量tt中
"mov %%eax,%0\n\t"
: "=m" (tt)
);

t = localtime(&tt);
fprintf(stdout,"%s",asctime(t));
return 0;
}