linux中直接进行系统调用和通过C库调用的示例

深入了解LINUX,这方面内容不可少,这段时间再补补。。

#include <syscall.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>

int main(void) {
    long ID1, ID2;
    /*直接系统调用*/
    ID1 = syscall(SYS_getpid);
    printf("syscall(SYS_getpid)=%ld\n", ID1);
    /*使用libc封装的系统调用*/
    ID2 = getpid();
    printf("getpid()=%ld\n", ID2);
    return(0);
}

  

时间: 2024-11-05 13:40:25

linux中直接进行系统调用和通过C库调用的示例的相关文章

[tty与uart]1.Linux中tty框架与uart框架之间的调用关系剖析

转自:http://developer.51cto.com/art/201209/357501_all.htm 目录 在这期间有一个问题困扰着我,那就是来自用户空间的针对uart设备的操作意图是如何通过tty框架逐层调用到uart层的core驱动,进而又是如何调用到真实对应于设备的设备驱动的,本文中的对应设备驱动就是8250驱动,最近我想将这方面的内容搞清楚. 在说明这一方面问题之前我们先要大致了解两个基本的框架结构,tty框架和uart框架. 1.tty框架 在linux系统中,tty表示各种

Linux中tty框架与uart框架之间的调用关系剖析【转】

转自:http://developer.51cto.com/art/201209/357501.htm 之前本人在"从串口驱动的移植看linux2.6内核中的驱动模型 platform device & platform driver"一文中已经写到了移植的设备是如何通过platform总线来与对应的驱动挂载. 在这期间有一个问题困扰着我,那就是来自用户空间的针对uart设备的操作意图是如何通过tty框架逐层调用到uart层的core驱动,进而又是如何调用到真实对应于设备的设备

浅谈Linux中男人的魅力—man

在Linux系统中提供帮助的命令.通俗点来说它就是命令的使用手册.它共分九个章节1.用户命令2.系统调用3.C库调用4.设备文件及特殊文件5.配置文件格式6.游戏7.杂项8.管理命令及守护进程9.Linux内核API(CentOS7以后出现)比如想知道某一个命令属于man的那一章节我们可以用whatis command(命令)例: whatis pwd[[email protected] ~]# whatis pwdpwd (1) - print name of current/working

Linux中的用户和权限管理

Linux是多用户,多任务操作系统:多用户是指多个用户可以同时使用系统资源,而多任务指同时运行多个进程. 用户是能够获取系统资源的权限的集合,Linux通过用户实现资源分隔. 用户组是具有相同特征用户的逻辑集合,是用户的容器. 1.用户: (1)用户类别 管理员:root 普通用户: 系统用户:仅仅用于用于启动服务进程. 登录用户:用于使用者交互使用,是系统资源的使用者 (2)用户在操作系统中用UID来标识: UID是16bits的二进制数字,如此范围为:0-65535.Linux 系统对用户U

Linux 中用户权力的下放

如何实现用户权力的下放(普通用户因为权限无法执行一些命令,需要通过高级用户的授权才能执行命令) 1.sudo 能把某些超级权限针对性的下放,并且不需要普通用户知道root密码,所以sudo相对于权限无限制性的su 来说,还是比较安全的2.sudo能把某些超级权限针对性的下放,并且不需要普通用户知道root密码,所以sudo相对于权限无限制性的su来说,还是比较安全的sudo执行命令的流程是当前用户切换到root,然后以root身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是需要通过s

linux中mmap系统调用原理分析与实现

参考文章:http://blog.csdn.net/shaoguangleo/article/details/5822110 linux中mmap系统调用原理分析与实现 1.mmap系统调用(功能)      void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )      内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的

Linux中brk()系统调用,sbrk(),mmap(),malloc(),calloc()的异同【转】

转自:http://blog.csdn.net/kobbee9/article/details/7397010 brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的:       每个进程可访问的虚拟内存空间为3G,但在程序编译时,不可能也没必要为程序分配这么大的空间,只分配并不大的数据段空间,程序中动态分配的空间就是从这一块分配的.如果这块空间不够,malloc函数族(realloc,calloc等)就调用sbrk函数将数据段的下界移动,sbrk函数在内核的管理

Linux中的select,poll,epoll模型

Linux中的 select,poll,epoll 都是IO多路复用的机制. select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作.select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,事实上从现在看来,这也是它所剩不多的优点之一.select的一个缺点在于单个进程能够监视的文件描

Linux中的僵尸进程和孤儿进程

在UNIX里,除了进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程.        操作系统内核以进程标识符(Process Identifier,即PID)来识别进程.进程0是系统引导时创建的一个特殊进程,在其调用fork创建出一个子进程(即PID=1的进程1,又称init)