概述写一个glibc api的系统调用
可能重复:
需要glibc源的帮助
我明白如何在linux内核中实现我们自己的系统调用。 我知道我们可以在ac程序中用syscall()或_asm()来调用它。
但我想了解如何写这个新的系统调用glibc API?
open()和read() glibc函数如何在内核中调用映射到系统调用?
如何捕获读写系统调用?
linux:通过ptrace()执行系统调用
windows相当于linux的readahead系统调用?
Fortran OPEN调用在NFSv3与NFSv4上有所不同
挂钩ntdll.dll调用的问题
char message[ ] = \”Hello!n\”; int main( voID ) { write( 1,message,7 ); exit( 0 ); }
当我将上面的程序转换成汇编时,它正在给出
main: leal 4(%esp),%ecx andl $-16,%esp pushl -4(%ecx) pushl %ebp movl %esp,%ebp pushl %ecx subl $20,%esp movl $7,8(%esp) movl $message,4(%esp) movl $1,(%esp) call write movl $0,(%esp) call exit .size main,.-main .IDent \”GCC: (Debian 4.3.2-1.1) 4.3.2\” .section .note.GNU-stack,\”\”,@progbits
〜
3,在“通话写作”中,我认为写作是glibc电话吗? 那之后会发生什么? 它如何将glibc调用映射到系统调用?
linux系统调用和INT 80软件中断之间的巨大差异
在Unix中创build“系统调用”
挂钩linux上用户空间的sycalls
测量系统调用的速度
在不修改内核的情况下拦截系统调用的最小开销方式
看到这样的答案,并回答类似的问题。 还请阅读关于系统调用 , linux内核 , linux系统调用的概述以及程序集的指导
glibc的write函数不是真正的系统调用。 这是一个包装(通过例如sysenter机器指令,可能与VDSO ,并设置errno sycall)。 您可以使用strace来了解某些程序所完成的系统调用。
例如, MUSL libc具有write.c write实现。 对于GNU libc,看看它的write.c 。
总结
以上是内存溢出为你收集整理的写一个glibc api的系统调用全部内容,希望文章能够帮你解决写一个glibc api的系统调用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容