cc 

-I  //include 目录

-L //静态库目录?动态也可以

-l //小写L,接静态库名称?动态也可以

-DXXX=‘“XXFF”’ //-D直接定义宏

-c 只编译

-O 优化

-g 生成调试信息

splint , gprof, cflow , dbx , gdb ,sdb //除了工具,还有日志记录调试更便捷

动态库:隐式调用 自动加载,与静态库一致 使用时,cc 后面加上路径,接口不变可以直接换so文件

显示调用 用dlopen

动态库创建:位置无关码(PIC)型.o

gcc -O -shared -shared -o xxx.so xxx.c 

LD_LIBRARY_PATH  //LINUX下设置这个环境目录,放动态库

#include <dlfcn.h> dlopen() / dlsym()

显示调用动态库流程 

gcc -O -o tds tds.c -ldl //-ldl 固定写法 显示调用动态库时用

二、文件系统

超级块结构 filsys.h ; i node  ino.h ;文件属性 stat.h ; 

termio.h struct termio ioctl()

三、并发程序设计

sysproc //标识号0 调度系统中运行的进程, init // 标识号为1 

geteuid() 进程有效用户ID,getegid() 进程有效组ID

fork-exec;vfork-exec模型

system() == vfork-exec

wait 实现父子进程之间同步:函数wait挂起调用它的进程,直到它的任一子进程退出

waitpid wait加强版 <sys/wait.h>

避免僵死进程 :fork两次让子进程退出,子子进程的父进程更改为进程init

四、进程通信

popen()  pclose 

mkfifo/mknod k1 p 有名管道用文件操作调用使用

消息对列是UNIX内核中一个先进先出链表结构

狭义讲IPC特指消息对列,信号量,共享内存

ipc /ipcrm   <sys/msg.h> struct msqid_qs 

int msgget(key_t key,int msgflg); //创建消息队列

msgsnd/msgrcv //消息发送和接收

msgctl

信号量:sem.h semid_ds sem

int semget(key_t key,int nsems,int semflg) 

semctl 信号量控制

semop() // P ,V ,Z(进程阻塞直到信号量为0)

共享内存:创建(shmget),映射(shmat),读写,释放(shmdt)  

shmctl

五、网络通信

 

精通UNIX下C语言编程与项目实践的更多相关文章

  1. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  2. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  3. Linux下C语言编程基础学习记录

    VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...

  4. Linux下C语言编程实现spwd函数

    Linux下C语言编程实现spwd函数 介绍 spwd函数 功能:显示当前目录路径 实现:通过编译执行该代码,可在终端中输出当前路径 代码实现 代码链接 代码托管链接:spwd.c 所需结构体.函数. ...

  5. Linux基础与Linux下C语言编程基础

    Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...

  6. LINUX下C语言编程调用函数、链接头文件以及库文件

    LINUX下C语言编程经常需要链接其他函数,而其他函数一般都放在另外.c文件中,或者打包放在一个库文件里面,我需要在main函数中调用这些函数,主要有如下几种方法: 1.当需要调用函数的个数比较少时, ...

  7. 【转】Linux基础与Linux下C语言编程基础

    原文:https://www.cnblogs.com/huyufeng/p/4841232.html ------------------------------------------------- ...

  8. Linux C语言编程基本原理与实践

    Linux C语言编程基本原理与实践(2018-06-16 19:12:15) Linux C语言编程基本原理与实践 高效的学习带着目的性: 是什么 -> 干什么 -> 怎么用 重识C语言 ...

  9. P4语言编程快速开始 实践二

    参考:P4语言编程快速开始 上一篇系列博客:P4语言编程快速开始 实践二 Demo 2 本Demo所做的修改及实现的功能: 为simple_router添加一个计数器(counter),该计数器附加( ...

随机推荐

  1. Android 启动Activity的方式

    Activity的启动分为两种方式,显示方式和隐式方式,显示方式就是在通过intent启动Activity时指定了Activity的包名和类名. 而隐式方式则在初始化Intent时仅仅指定action ...

  2. SurfaceView 和 View 区别

    android.view.View 和 android.view.SurfaceView SurfaceView 是从 View 基类中派生出来的显示类,直接子类有 GLSurfaceView和Vid ...

  3. 机器学习Matlab打击垃圾邮件的分类————朴素贝叶斯模型

    该系列来自于我<人工智能>课程回顾总结,以及实验的一部分进行了总结学习机 垃圾分类是有监督的学习分类最经典的案例,本文首先回顾了概率论的基本知识.则以及朴素贝叶斯模型的思想.最后给出了垃圾 ...

  4. C. Table Decorations(Codeforces Round 273)

    C. Table Decorations time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. Unity3D-第一视角射击游戏

    一.新建关卡 File,Save Scene,File,New Scene,File,Save Scene as... ,Level02.unity 1.建立场景 从Assets中拖放场景模型到Hie ...

  6. Asp.net 获取服务器指定文件夹目录文件,并提供下载

    string dirPath = HttpContext.Current.Server.MapPath("uploads/"); if (Directory.Exists(dirP ...

  7. 让你在DOS中任意切换目录

    尽管Windows图形界面早已经取代了无趣的DOS字符界面(废话,Vista都呼之欲出了),不过在日常操作中,还是有很多时候需要用到命令提示符.比如批量重命名文件时.执行字符命令时.在命令行下恢复系统 ...

  8. WebService测试工具SoapUI

    尊重原著作:本文转载自http://gqsunrise.iteye.com/blog/1958480 1. 简介 SoapUI是用java开发的测试web service的工具. 2. 安装 2.1. ...

  9. jsf小例子

    有人问我用过jsf没?   当时没有用过,就看了一下: 写了一个小例子  JSF和struts2 差不多的,都有一些配置和跳转 struts2的action配置和JSF的faces-config.xm ...

  10. Spark源码学习3

    转自:http://www.cnblogs.com/hseagle/p/3673132.html 一.概要 本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚 ...