精华内容
下载资源
问答
  • linux系统函数接口手册
  • 一文件操作篇 1creat建立文件 头文件;3;4;8;9;11;15;16;17;18;19;22;23;24;27;29;31;32;33;34
  • linux C函数参考手册

    2010-04-28 12:15:12
    实用的linux c函数手册,包含了大多数系统函数,和使用说明
  • 1creat建立文件 头文件 1 #include<sys/types.h> 2 #include<sys/stat.h> 3 #include<fcntl.h> 定义函数 1 int creat(const char * pathname, mode_tmode; 函数说明 参数pathname指向欲建立文件路径字符串creat)相当...
  • Linux c函数参考手册

    2014-08-18 15:05:04
    linux c函数参考手册,chm格式,查看方便,使用简洁。支持各种window操作系统
  • linux系统调用手册

    2013-07-15 01:54:36
    有关系统调用手册linux内部资料~一些系统调用的内建函数~
  • LINUX命令操作手册,linux_C 函数手册,Linux常用命令索引,Linux系统Posix线程编程指南,Vi 编辑器操作指南,shell 常用命令
  • linux系统下的c语言函数速查手册,欢迎大家下载!
  • linux c函数速查手册

    2009-08-19 20:56:41
    linux系统中的c函数库。有两个版本,htm版和pdf版,挺好用的。
  • 资料:《LINUX环境编程图文指南》 链接:...提取码:xxxx linux_C函数库中文手册 ...提取码:xxxx Linux系统常用命令快速入门 链接:https://pan.baidu.com/s/10FInEivAQiGNYyGrjFEMyw 提取码:xxxx ...

    资料:《LINUX环境编程图文指南》

    链接:https://pan.baidu.com/s/10Ry0TGxB4Dxgeos-wPbaCA
    提取码:xxxx


    linux_C函数库中文手册

    链接:https://pan.baidu.com/s/1axIygUbHP9wHZj4LMd2wFg
    提取码:xxxx


    Linux系统常用命令快速入门

    链接:https://pan.baidu.com/s/10FInEivAQiGNYyGrjFEMyw
    提取码:xxxx

    展开全文
  • Linux常用指令大全前言Linux常用命令部分1.系统信息2.文件(指令较多,只截取部分)3.进程4.压缩/解压5.常用Shell6.自动化任务7.网络SSH8.安装/卸载9.Vi编辑器10.查找11.Docker总结 前言 博主能力有限的情况下尽可能...


    前言

    博主能力有限的情况下尽可能的去整理了常用的Linux终端命令


    以下是本篇文章正文内容,图片截取有些只是部分,具体可以到文末下载

    Linux常用命令部分

    1.系统信息

    sy_info1
    sy_info2
    sy_info3

    2.文件(指令较多,只截取部分)

    file1file2file3file4file5file6

    3.进程

    tasktask2

    4.压缩/解压

    tar

    5.常用Shell

    Shellshell2shell3

    6.自动化任务

    automatictasks

    7.网络SSH

    1,
    SSH12,
    ssh23,
    SSH3
    4,ssh4

    8.安装/卸载

    安装及卸载

    9.Vi编辑器

    VI编辑器

    10.查找

    tail
    tail2

    11.Docker

    Docker


    总结

    博主推荐大家初学时可以自己尝试去搭建VM虚拟机最新版本16.0.1,然后安装Ubuntu系统。 当然如果你自身没有条件搭建可以使用csdn程序员学院内置的CentOS7系统,只需要进入csdn程序员学院选择跟我练Linux,就可以进入环境

    https://edu.csdn.net/content/lablist(跟我练Linux)

    常用命令文档链接https://wwe.lanzous.com/iyLSHo7khjc
    文档为docx,水印可自行删除
    

    Linux_C函数手册https://wwe.lanzous.com/iC8jFo7kkpg

    如有任何疑问或建议可以私信我rayonsun@outlook.com

    展开全文
  • C 系统函数 参考手册

    2019-06-13 16:05:39
    Linux C函数库参考手册 目录 第1章字符测试函数 第2章数据转换函数 第3章内存配置函数 第4章时间函数 第5章字符串处理函数 第6章数学计算函数 第7章用户和组函数 第8章数据加密函数 第9章数据结构函数 第...

    找不到源文件地址了,此文系转载。

    Linux C函数库参考手册

    目录

    第1章字符测试函数

    第2章数据转换函数

    第3章内存配置函数

    第4章时间函数

    第5章字符串处理函数

    第6章数学计算函数

    第7章用户和组函数

    第8章数据加密函数

    第9章数据结构函数

    第10章随机数函数

    第11章初级I/O函数

    第12章标准I/O函数

    第13章进程及流程控制

    第14章格式化输人输出函数

    第15章文件及目录函数

    第16章 信号函数

    第17章错误处理函数

    第18章管道相关函数

    第19章Soket相关函数

    第20章进程通信(IPC)函数

    第21章记录函数

    第22章环境变量函数

    第23章正则表达式

    第24章动态函数

    第25章其他函数

    其他



    第1章字符测试函数


    isalnum(测试字符是否为英文字母或数字)
    isalpha(
    测试字符是否为英文字母)
    isascii(
    测试字符是否为ASCII码字符)
    isblank(
    测试字符是否为空格字符)
    iscntrl(
    测试字符是否为ASCII码的控制字符)
    isdigit(
    测试字符是否为阿拉伯数字)
    isgraph(
    测试字符是否为可打印字符)
    islower(
    测试字符是否为小写英文字母)
    isprint(
    测试字符是否为可打印字符)
    isspace(
    测试字符是否为空格字符)
    ispunct(
    测试字符是否为标点符号或特殊符号)
    isupper(
    测试字符是否为大写英文字母)
    isxdigit(
    测试字符是否为16进制数字)

    2章数据转换函数


    atof(将字符串转换成浮点型数)1
    atoi(
    将字符串转换成整型数)
    atol(
    将字符串转换成长整型数)
    ecvt(
    将浮点型数转换成字符串,19取四舍五入)
    fcvt(
    将浮点型数转换为字符串,20取四舍五入)
    gcvt(
    将浮点型数转换为字符串,21取四舍五入)

    3章内存配置函数


    alloca(配置内存空间)
    brk(
    改变数据字节的范围)
    calloc(
    配置内存空间)
    free(
    释放原先配置的内存)
    getpagesize(
    取得内存分页大小)
    malloc(
    配置内存空间)
    mmap(
    建立内存映射)
    munmap(
    解除内存映射)
    realloc(
    更改己配置的内存空间)
    sbrk(
    增加程序可用的数据空间)
     

    4章时间函数


    asctime(将时间和日期以字符串格式表示)
    clock(
    取得进程占用CPU的大约时间)
    ctime(
    将时间和日期以字符串格式表示)
    difftime(
    计算时间差距)
    ftime(
    取得目前的时间和日期)
    gettimeofday(
    取得目前的时间)
    gmtime(
    取得目前的时间和日期)
    localtime(
    取得当地目前的时间和日期)
    mktime(
    将时间结构数据转换成经过的秒数)
    settimeofday(
    设置目前的时间)
    strftime(
    格式化日期和时间)
    time(
    取得目前的时间)
    tzset(
    设置时区以供时间转换)


    5章字符串处理函数


    bcmp(比较内存内容)
    bcopy(
    拷贝内存内容)
    bzero(
    将一段内存内容全清为零)
    ffs(
    在一整型数中查找第一个值为真的位)
    index(
    查找字符串中第一个出现的指定字符)
    memccpy(
    拷贝内存内容)
    memchr(
    在某一内存范围中查找一特定字符)
    memcmp(
    比较内存内容)
    memcpy(
    拷贝内存内容)
    memfrob(
    对内存区域编码)
    memmove(
    拷贝内存内容)
    memset(
    将一段内存空间填入某值)
    rindex(
    查找字符串中最后一个出现的指定字符)
    strcasecmp(
    忽略大小写比较字符串)
    strcat(
    连接两字符串)
    strchr(
    查找字符串中第一个出现的指定字符)
    strcmp(
    比较字符串)
    strcoll(
    采用目前区域的字符排列次序来比较字符串)
    strcpy(
    拷贝字符串)
    strcspn(
    返回字符串中连续不含指定字符串内容的字符数)
    strdup(
    复制字符串)
    strfry(
    随机重组字符串内的字符)
    strlen(
    返回字符串长度)
    strncasecmp(
    忽略大小写比较字符串)
    strncat(
    连接两字符串)
    strncmp(
    比较字符串)
    strncpy(
    拷贝字符串)
    strpbrk(
    查找字符串中第一个出现的指定字符)
    strrchr(
    查找字符串中最后一个出现的指定字符)
    strspn(
    返回字符串中连续不合指定字符串内容的字符数)
    strstr(
    在一字符串中查找指定的字符串)
    strtok(
    分割字符串)
     

    6章数学计算函数


    abs(计算整型数的绝对值)
    acos(
    取反余弦函数值)
    asin(
    取反正弦函数值)
    atan(
    取反正切函数值)
    atan2(
    取得反正切函数值)
    ceil(
    取不小于参数的最小整型数)
    cos(
    取余弦函数值)
    cosh(
    取双曲线余弦函数值)
    div(
    取得两整型数相除后的商及余数)
    exp(
    计算指数)
    fabs(
    计算浮点型数的绝对值)
    frexp(
    将浮点型数分为底数与指数)
    hypot(
    计算直角三角形斜边长)
    labs(
    计算长整型数的绝对值)
    ldexp(
    计算2的次方值)
    ldiv(
    取得两长整数相除后的商及余数)
    log(
    计算以e为底的对数值)
    log10(
    计算以10为底的对数值)
    modf(
    将浮点型数分解成整数与小数)
    pow(
    计算次方值)
    sin(
    取正弦函数值)
    sinh(
    取双曲线正弦函数值)
    sqrt(
    计算平方根值)
    tan(
    取正切函数值)
    tanh(
    取双曲线正切函数值)
     

    7章用户和组函数


    cuserid(取得用户帐号名称)
    endgrent(
    关闭组文件)
    endpwent(
    关闭密码文件)
    endutent(
    关闭utmp文件)
    fgetgrent(
    从指定的文件来读取组格式)
    fgetpwent(
    从指定的文件来读取密码格式)
    getegid(
    取得有效的组识别码)
    geteuid(
    取得有效的用户识别码)
    getgid(
    取得真实的组识别码)
    getgrent(
    从组文件文件中取得帐号的数据)
    getgrgid(
    从组文件中取得指定gid的数据)
    getgrnan(
    从组文件中取得指定组的数据)
    getgroups(
    取得组代码)
    getlogin(
    取得登录的用户帐号名称)
    getpw(
    取得指定用户的密码文件数据)
    getpwent(
    从密码文件中取得帐号的数据)
    getpwnam(
    从密码文件中取得指定帐号的数据)
    getpwuid(
    从密码文件中取得指定uid的数据)
    getuid(
    取得真实的用户识别码)
    getutent(
    utmp文件中取得帐号登录数据)
    getutid(
    utmp文件中查找特定的记录)
    getutline(
    utmp文件中查找特定的记录)
    initgroups(
    初始化组清单)
    logwtmp(
    将一登录数据记录到wtmp文件)
    pututline(
    utmp记录写入文件)
    setegid(
    设置有效的组识别码)
    seteuid(
    设置有效的用户识别码)
    setfsgid(
    设置文件系统的组识别码)
    setfsuid(
    设置文件系统的用户识别码)
    setgid(
    设置真实的组识别码)
    setgrent(
    从头读取组文件中的组数据)
    setgroups(
    设置组代码)
    setpwent(
    从头读取密码文件中的帐号数据)
    setregid(
    设置真实及有效的组识别码)
    setreuid(
    设置真实及有效的用户识别码)
    setuid(
    设置真实的用户识别码)
    setutent(
    从头读取utmp/文件中的登录数据)
    updwtmp(
    将一登录数据记录到wtmp文件)
    utmpname(
    设置utmp文件路径)
     

    8章数据加密函数


    crypt(将密码或数据编码)
    getpass(
    取得一密码输入)
     

    9章数据结构函数


    bsearch(二元搜索)
    hcreate(
    建立哈希表)
    hdestory(
    删除哈希表)
    hsearch(
    哈希表搜索)
    insque(
    加入一项目至队列中)
    lfind(
    线性搜索)
    lsearch(
    线性搜索)
    qsort(
    利用快速排序法排列数组)
    rremque(
    从队列中删除一项目)
    tdelete(
    从二叉树中删除数据)
    tfind(
    搜索二叉树)
    tsearch(
    二叉树)
    twalk(
    走访二叉树)
     

    10章随机数函数


    drand48(产生一个正的浮点型随机数)
    erand48(
    产生一个正的浮点型随机数)
    initstate(
    建立随机数状态数组)
    jrand48(
    产生一个长整型数随机数)
    lcong48(
    设置48位运算的随机数种子)
    lrand48(
    产生一个正的长整型随机数)
    mrand48(
    产生一个长整型随机数)
    nrand48(
    产生一个正的长整型随机数)
    rand(
    产生随机数)
    random(
    产生随机数)
    seed48(
    设置48位运算的随机数种子)
    setstate(
    建立随机数状态数组)
    srand(
    设置随机数种子)
    srand48(
    设置48位运算的随机数种子)
    srandom(
    设置随机数种子)
     

    11章初级IO函数


    close(关闭文件)
    creat(
    建立文件)
    dup(
    复制文件描述词)
    dup2(
    复制文件描述词)
    fcntl(
    文件描述词操作)
    flock(
    锁定文件或解除锁定)
    fsync(
    将缓冲区数据写回磁盘)
    lseek(
    移动文件的读写位置)
    mkstemp(
    建立唯一的临时文件)
    open(
    打开文件)
    read(
    由己打开的文件读取数据)
    sync(
    将缓冲区数据写回磁盘)
    write(
    将数据写入已打开的文件内)
     

    12章标准IO函数


    clearerr(清除文件流的错误旗标)
    fclose(
    关闭文件)
    fdopen(
    将文件描述词转为文件指针)
    feof(
    检查文件流是否读到了文件尾)
    fflush(
    更新缓冲区)
    fgetc(
    由文件中读取一个字符)
    fgetpos(
    取得文件流的读取位置)
    fgets(
    由文件中读取一字符串)
    fileno(
    返回文件流所使用的文件描述词)
    fopen(
    打开文件)
    fputc(
    将一指定字符写入文件流中)
    fputs(
    将一指定的字符串写入文件内)
    fread(
    从文件流读取数据)
    freopen(
    打开文件)
    fseek(
    移动文件流的读写位置)
    fsetpos(
    移动文件流的读写位置)
    ftell(
    取得文件流的读取位置)
    fwrite(
    将数据写至文件流)
    getc(
    由文件中读取一个字符)
    getchar(
    由标准输入设备内读进一字符)
    gets(
    由标准输入设备内读进一字符串)
    mktemp(
    产生唯一的临时文件文件名)
    putc(
    将一指定字符写入文件中)
    putchar(
    将指定的字符写到标准输出设备)
    puts(
    将指定的字符串写到标准输出设备)
    rewind(
    重设文件流的读写位置为文件开头)
    setbuf(
    设置文件流的缓冲区)
    setbuffer(
    设置文件流的缓冲区)
    setlinebuf(
    设置文件流为线性缓冲区)
    setvbuf(
    设置文件流的缓冲区)
    tmpfile(
    建立临时文件)
    ungetc(
    将一指定字符写回文件流中)
     

    13章进程及流程控制


    abort(以异常方式结束进程)
    assert(
    若测试的条件不成立则终止进程)
    atexit(
    设置程序正常结束前调用的函数)
    execl(
    执行文件)
    execle(
    执行文件)
    execlp(
    PATH环境变量中查找文件并执行)
    execv(
    执行文件)
    execve(
    执行文件)
    execvp(
    执行文件)
    exit(
    正常结束进程)
    _exit(
    结束进程执行)
    fork(
    建立一个新的进程)
    getpgid(
    取得进程组识别码)
    getpgrp(
    取得进程组识别码)
    getpid(
    取得进程识别码)
    getppid(
    取得父进程的进程识别码)
    getpriority(
    取得程序进程执行优先权)
    longjmp(
    跳转到原先setjmp保存的堆栈环境)
    nice(
    改变进程优先顺序)
    on
    _exit(设置程序正常结束前调用的函数)
    ptrace(
    进程追踪)
    setjmp(
    保存目前堆栈环境)
    setpgid(
    设置进程组识别码)
    setpgrp(
    设置进程组识别码)
    setpriority(
    设置程序进程执行优先权)
    siglongjmp(
    跳转到原先sigsetjmp保存的堆栈环境)
    sigsetjmp(
    保存目前堆栈环境)
    system(
    执行shell命令)
    wait(
    等待子进程中断或结束)
    waitpid(
    等待子进程中断或结束)
     

    14章格式化输人输出函数


    fprintf(格式化输出数据至文件)
    fscanf(
    格式化字符串输入)
    printf(
    格式化输出数据)
    scanf(
    格式化字符串输入)
    snprintf(
    格式化字符串复制)
    sprintf(
    格式化字符串复制)
    sscanf(
    格式化字符串输入)
    vfprintf(
    格式化输出数据至文件)
    vfcanf(
    格式化字符串输入)
    vprintf(
    格式化输出数据)
    vscanf(
    格式化字符串输入)
    vsnprintf(
    格式化字符串复制)
    vsprintf(
    格式化字符串复制)
    vsscanf(
    格式化字符串输入)
     

    15章文件及目录函数


    access(判断是否具有存取文件的权限)
    alphasort(
    依字母顺序排序目录结构)
    chdir(
    改变当前的工作目录)
    chmod(
    改变文件的权限)
    chown(
    改变文件的所有者)
    chroot(
    改变根目录)
    closedir(
    关闭目录)
    fchdir(
    改变当前的工作目录)
    fchmod(
    改变文件的权限)
    fchown(
    改变文件的所有者)
    fstat(
    由文件描述词取得文件状态)
    ftruncate(
    改变文件大小)
    ftw(
    遍历目录树)
    get_current_dir_name(
    取得当前的工作目录)
    getcwd(
    取得当前的工作目录)
    getwd(
    取得当前的工作目录)
    lchown(
    改变文件的所有者)
    link(
    建立文件连接)
    lstat(
    由文件描述词取得文件状态)
    nftw(
    遍历目录树)
    opendir(
    打开目录)
    readdir(
    读取目录)
    readlink(
    取得符号连接所指的文件)
    realpath(
    将相对目录路径转换成绝对路径)
    remove(
    删除文件)
    rename(
    更改文件名称或位置)
    rewinddir(
    重设读取目录的位置为开头位置)
    scandir(
    读取特定的目录数据)
    seekdir(
    设置下回读取目录的位置)
    stat(
    取得文件状态)
    symlink(
    建立文件符号连接)
    telldir(
    取得目录流的读取位置)
    truncate(
    改变文件大小)
    umask(
    设置建立新文件时的权限遮罩)
    unlink(
    删除文件)
    utime(
    修改文件的存取时间和更改时间)
    utimes(
    修改文件的存取时间和更改时间)
     

    16章 信号函数


    alarm(设置信号传送闹钟)
    kill(
    传送信号给指定的进程)
    pause(
    让进程暂停直到信号出现)
    psignal(
    列出信号描述和指定字符串)
    raise(
    传送信号给目前的进程)
    sigaction(
    查询或设置信号处理方式)
    sigaddset(
    增加一个信号至信号集)
    sigdelset(
    从信号集里删除一个信号)
    sigemptyset(
    初始化信号集)
    sigfillset(
    将所有信号加入至信号集)
    sigismember(
    测试某个信号是否已加入至信号集里)
    signal(
    设置信号处理方式)
    sigpause(
    暂停直到信号到来)
    sigpending(
    查询被搁置的信号)
    sigprocmask(
    查询或设置信号遮罩)
    sigsuspend(
    暂停直到信号到来)
    sleep(
    让进程暂停执行一段时间)
     

    17章错误处理函数


    ferror(检查文件流是否有错误发生)
    perror(
    打印出错误原因信息字符串)
    streror(
    返回错误原因的描述字符串)
     

    18章管道相关函数


    mkfifo(建立具名管道)
    pclose(
    关闭管道IO)
    pipe(
    建立管道)
    popen(
    建立管道I/O)
     

    19Soket相关函数


    accept(接受socket连线)
    bind(
    socket定位)
    connect(
    建立socket连线)
    endprotoent(
    结束网络协议数据的读取)
    endservent(
    结束网络服务数据的读取)
    gethostbyaddr(
    IP地址取得网络数据)
    gethostbyname(
    由主机名称取得网络数据)
    getprotobyname(
    由网络协议名称取得协议数据)
    getprotobynumber(
    由网络协议编号取得协议数据)
    getprotoent(
    取得网络协议数据)
    getservbyname(
    依名称取得网络服务的数据)
    getservbyport(
    port号码取得网络服务的数据)
    getservent(
    取得主机网络服务的数据)
    getsockopt(
    取得socket状态)
    herror(
    打印出网络错误原因信息字符串)
    hstrerror(
    返回网络错误原因的描述字符串)
    htonl(
    32位主机字符顺序转换成网络字符顺序)
    htons(
    16位主机字符顺序转换成网络字符顺序)
    inet_addr(
    将网络地址转成网络二进制的数字)
    inet_aton(
    将网络地址转成网络二进制的数字)
    inet_ntoa(
    将网络二进制的数字转换成网络地址)
    listen(
    等待连接)
    ntohl(
    32位网络字符顺序转换成主机字符顺序)
    ntohs(
    16位网络字符顺序转换成主机字符顺序)
    recv(
    socket接收数据)
    recvfrom(
    socket接收数据)
    recvmsg(
    socket接收数据)
    send(
    socket传送数据)
    sendmsg(
    socket传送数据)
    sendto(
    socket传送数据)
    setprotoent(
    打开网络协议的数据文件)
    setservent(
    打开主机网络服务的数据文件)
    setsockopt(
    设置socket状态)
    shutdown(
    终止socket通信)
    socket(
    建立一个socket通信)
     

    20章进程通信(IPC)函数


    ftok(将文件路径和计划代号转为SystemcVIPCkey)
    msgctl(
    控制信息队列的运作)
    msgget(
    建立信息队列)
    msgrcv(
    从信息队列读取信息)
    msgsnd(
    将信息送入信息队列)
    semctl(
    控制信号队列的操作)
    semget(
    配置信号队列)
    semop(
    信号处理)
    shmat(attach
    共享内存)
    shmctl(
    控制共享内存的操作)
    shmdt(detach
    共享内存)
    shmget(
    配置共享内存)
     

    21章记录函数


    closelog(关闭信息记录)
    openlog(
    准备做信息记录)
    syslog(
    将信息记录至系统日志文件)
     

    22章环境变量函数


    getenv(取得环境变量内容)
    putenv(
    改变或增加环境变量)
    setenv(
    改变或增加环境变量)
    unsetenv(
    清除环境变量内容)
     

    23章正则表达式


    regcomp(编译正则表达式字符串)
    regerror(
    取得正则搜索的错误原因)
    regexec(
    进行正则表达式的搜索)
    regfree(
    释放正则表达式使用的内存)
     

    24章动态函数


    dlclose(关闭动态函数库文件)
    dlerror(
    动态函数错误处理)
    dlopen(
    打开动态函数库文件)
    dlsym(
    从共享对象中搜索动态函数)
     

    25章其他函数


    getopt(分析命令行参数)
    isatty(
    判断文件描述词是否是为终端机)
    select(I/O
    多工机制)
    ttyname(
    返回一终端机名称)

    其他

    Linux 操作系统中函数库路径如下:
    /lib //系统必备共享库
    /usr/lib //标准共享库和静态库
    /usr/i486-linux-libc5/lib//libc5 兼容性函数库
    /usr/X11R6/lib //X11R6 的函数库
    /usr/local/lib //本地函数库
    头文件路径如下:
    /usr/include //系统头文件
    /usr/local/include //本地头文件
    共享库及其相关配置文件和管理命令如下:
    /etc/ld.so.conf //包含共享库的搜索位置
    ldconfig //共享库管理工具,一般在更新了共享库之后要运行该命令
    ldd //可查看可执行文件所使用的共享库
    在进行软件开发时,一般都需要使用库文件,大量使用库文件有以下两个主要原因:
    1)为了便于编程,对于部分经常使用的函数,相应的开发语言都提供了对应的库文件支持。
    2)隐藏具体的函数实现。程序员在使用库文件时,只需要包含所需要函数所在的头文件,而不必关心该函数的具体实现。对于商业软件来说,知识产权得到了一定程度的保护。
    在任何编程环境中,库文件都是一些预先编译好的函数的集合,这些函数以二进制代码形式存储在库文件中。用户要使用这些函数,只需要包含这些库文件即可。一般来说,要从库文件获得相应的函数有两种办法。
    1)在编译时将库中相应函数的二进制映像代码直接拷贝到当前编译的程序中,当前程序在运行时独立运行。这种库即静态库,在 Linux 中,以.a 为后缀的为静态库,如 libtest.a
    2)在编译时只引用库中相应函数的二进制映像代码的入口位置(即不直接拷贝),该程序在运行时从共享库文件中读出该函数代码(这需要首先将共享库加载到内存中),从而间接引用,这种库即共享库,在 Linux 操作系统中,以 libxxx.so.x.x 为格式命名。

     

    展开全文
  • Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_...

    </pre>Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火墙(NETLINK_FIREWALL),socket 监视(NETLINK_INET_DIAG),netfilter 日志(NETLINK_NFLOG),ipsec 安全策略(NETLINK_XFRM),SELinux 事件通知(NETLINK_SELINUX),iSCSI 子系统(NETLINK_ISCSI),进程审计(NETLINK_AUDIT),转发信息表查询(NETLINK_FIB_LOOKUP),netlink connector(NETLINK_CONNECTOR),netfilter 子系统(NETLINK_NETFILTER),IPv6 防火墙(NETLINK_IP6_FW),DECnet 路由信息(NETLINK_DNRTMSG),内核事件向用户态通知(NETLINK_KOBJECT_UEVENT),通用 netlink(NETLINK_GENERIC)。<p></p><p>Netlink 是一种在内核与用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket API 就可以使用 netlink 提供的强大功能,内核态需要使用专门的内核 API 来使用 netlink。</p><p>Netlink 相对于系统调用,ioctl 以及 /proc 文件系统而言具有以下优点:</p><p>1,为了使用 netlink,用户仅需要在 include/linux/netlink.h 中增加一个新类型的 netlink 协议定义即可, 如 #define NETLINK_MYTEST 17 然后,内核和用户态应用就可以立即通过 socket API 使用该 netlink 协议类型进行数据交换。但系统调用需要增加新的系统调用,ioctl 则需要增加设备或文件, 那需要不少代码,proc 文件系统则需要在 /proc 下添加新的文件或目录,那将使本来就混乱的 /proc 更加混乱。</p><p>2. netlink是一种异步通信机制,在内核与用户态应用之间传递的消息保存在socket缓存队列中,发送消息只是把消息保存在接收者的socket的接收队列,而不需要等待接收者收到消息,但系统调用与 ioctl 则是同步通信机制,如果传递的数据太长,将影响调度粒度。</p><p>3.使用 netlink 的内核部分可以采用模块的方式实现,使用 netlink 的应用部分和内核部分没有编译时依赖,但系统调用就有依赖,而且新的系统调用的实现必须静态地连接到内核中,它无法在模块中实现,使用新系统调用的应用在编译时需要依赖内核。</p><p>4.netlink 支持多播,内核模块或应用可以把消息多播给一个netlink组,属于该neilink 组的任何内核模块或应用都能接收到该消息,内核事件向用户态的通知机制就使用了这一特性,任何对内核事件感兴趣的应用都能收到该子系统发送的内核事件,在后面的文章中将介绍这一机制的使用。</p><p>5.内核可以使用 netlink 首先发起会话,但系统调用和 ioctl 只能由用户应用发起调用。</p><p>6.netlink 使用标准的 socket API,因此很容易使用,但系统调用和 ioctl则需要专门的培训才能使用。</p><p><a target=_blank name="IDA5AD1B"></a>用户态使用 netlink</p><p>用户态应用使用标准的socket APIs, socket(), bind(), sendmsg(), recvmsg() 和 close() 就能很容易地使用 netlink socket,查询手册页可以了解这些函数的使用细节,本文只是讲解使用 netlink 的用户应该如何使用这些函数。注意,使用 netlink 的应用必须包含头文件 linux/netlink.h。当然 socket 需要的头文件也必不可少,sys/socket.h。</p><p>为了创建一个 netlink socket,用户需要使用如下参数调用 socket():</p>socket(AF_NETLINK, SOCK_RAW, netlink_type) <p>第一个参数必须是 AF_NETLINK 或 PF_NETLINK,在 Linux 中,它们俩实际为一个东西,它表示要使用netlink,第二个参数必须是SOCK_RAW或SOCK_DGRAM, 第三个参数指定netlink协议类型,如前面讲的用户自定义协议类型NETLINK_MYTEST, NETLINK_GENERIC是一个通用的协议类型,它是专门为用户使用的,因此,用户可以直接使用它,而不必再添加新的协议类型。</p><p><pre name="code" class="cpp">#include <sys/stat.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <string.h>
    #include <asm/types.h>
    #include <linux/netlink.h>
    #include <linux/socket.h>
    #include <errno.h>
    
    #define NETLINK_TEST 17
    #define MAX_PAYLOAD 1024  // maximum payload size
    
    
    int main(int argc, char* argv[])
    {
        struct sockaddr_nl src_addr, dest_addr;
        struct nlmsghdr *nlh = NULL;
        struct iovec iov;
        struct msghdr msg;
        int sock_fd, retval;
    
        // Create a socket
        sock_fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_TEST);
        if(sock_fd == -1){
            printf("error getting socket: %s\n", strerror(errno));
            return -1;
        }
    
        // To prepare binding
        memset(&src_addr, 0, sizeof(src_addr));
        src_addr.nl_family = PF_NETLINK; 
        src_addr.nl_pid = getpid();  // self pid 
        src_addr.nl_groups = 1; // multi cast
    
        retval = bind(sock_fd, (struct sockaddr*)&src_addr, sizeof(src_addr));
        if(retval < 0){
            printf("bind failed: %s\n", strerror(errno));
            close(sock_fd);
            return -1;
        }
    
        // To prepare recvmsg
        nlh = (struct nlmsghdr *)malloc(NLMSG_SPACE(MAX_PAYLOAD));
        if(!nlh){
            printf("malloc nlmsghdr error!\n");
            close(sock_fd);
            return -1;
        }
    
        memset(nlh, 0, NLMSG_SPACE(MAX_PAYLOAD));
        iov.iov_base = (void *)nlh;
        iov.iov_len = NLMSG_SPACE(MAX_PAYLOAD);
    
        memset(&msg, 0, sizeof(msg));
        memset(&dest_addr, 0, sizeof(dest_addr));
        msg.msg_name = (void *)&dest_addr;
        msg.msg_namelen = sizeof(dest_addr);
        msg.msg_iov = &iov;
        msg.msg_iovlen = 1;
    
        // Read message from kernel
        while(1){
            recvmsg(sock_fd, &msg, 0);
            printf("Received message: %s\n", NLMSG_DATA(nlh));
        }
    
        close(sock_fd);
    
        return 0;
    }
    


    展开全文
  • 应用编程函数自学手册 gedit file.txt 目录 第1类 时间编程类... 5 1.1 获取日历时间... 5 1.2 获取格林威治时间... 5 1.3 获取本地时间... 6 1.4 以字符串方式显示时间... 6 1.5 获取高精度时间.....
  • 系统编程概念章节中的函数解析 1.
  • 例如,在ubuntu系统终端中输入man pthread_join,查看pthread_join函数的帮助,但提示: 没有 pthread_join 的手册页条目 要解决此问题,需要安装额外的帮助包文件manpages-posix-dev 执行安装此包的命令,选择Y后,...
  • Linux系统编程手册 学习笔记(一)

    千次阅读 2018-08-28 00:02:24
    用户通过系统调用来进入到linux内核中,可以利用应用程序编程接口(API)的形式来访问系统提供的服务。其中包括创建新的进程、执行I/O、为进程间通信创建管道等。 2、用户态进行系统调用情况: 用户通过调用...
  • 参数入栈,传入外壳函数,外壳函数将参数置入特定寄存器(包括系统调用编号),执行中断指定。内核响应中断指令,调用system_call()里程处理中断。 如何处理中断呢? 在内核栈保存寄存器的值 审核系统调用编号的...
  • 有些系统调用可以使用pid作为输入参数,比如kill()系统调用,允许调用者向某一个特定进程发送信号。头函数unistd.h中 pid_t getpid(void)可以返回该进程的pid。 3.每个进程都有一个父进程号ppid。unistd.h中pid_t...
  • 1.在堆上分配内存: a.所谓堆,是一段长度可变的连续虚拟内存。...系统提供两个函数来调整program break,#inclue int brk(void *end_data_segment); //return 0 success, -1 error brk函数调整program break为en
  • linux c 函数全集文档

    2011-09-26 15:19:26
    Linux C 函数 使用手册 包括linux 应用层的所有API函数LINUX内核中的系统调用 资料齐全,描述简洁,十分方便程序开发人员使用
  • 作为linux的菜鸟,最近在看《Linux/Uinx》系统编程手册,不得不说这是本很好很好的书。今天整理了一下在本书上册开始部分给出的错误处理函数如下,希望对大家有所帮助: //tlpi_hdr.h #ifndef TPLI_HDR_H #define...
  • 如果同一个进程的多条线程可以同时安全的调用某一函数,那么该函数就是可重入的。 2.异步信号安全函数 指当信号处理函数调用时,可以保证其实现是安全的。如果某一函数是可重入的,又或者 信号处理函数无法将其...
  • 更为强大的是,不仅可以查看Linux中命令的使用帮助,还可以查看软件服务配置文件、系统调用、库函数等帮助信息。 man手册页文件存放在/usr/share/man目录下。 语法格式:man [命令] 常用参数: 指令 解释 -a...
  • 当进程P2向p1发送信号后,内核接受到信号,并将其放在p1的信号队列中,当p1再次陷入内核态时,会检查信号队列,并根据相应的信号调取相应的信号处理函数。 - p1什么时候会陷入内核态?当前进程由于系统调用、中断或...
  • Linux系统中的命令很多,不可能记住每一个命令、每一个参数,所以,在使用Linux过程中应用有一个帮助我们较多的命令man,可以查看不同命令的使用方法。此处同时在管理文件和目录介绍时介绍man的具体使用。 1 man...
  • 二、open函数手册上的定义 参数含义: 1、pathname: 在open函数中第一个参数pathname是指向想要打开的文件路径名,或者文件名。这个路径名是绝对路径名。文件名则是在当前路径下的。 2、flags: flags参数表示打开...
  • C函数参考手册

    2018-03-21 09:08:21
    linux 系统的C函数手册,介绍了常用的函数功能及参数。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 610
精华内容 244
关键字:

linux系统函数手册

linux 订阅