精通UNIX下C语言编程与项目实践
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语言编程与项目实践的更多相关文章
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- Linux下C语言编程基础学习记录
VIM的基本使用 LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...
- Linux下C语言编程实现spwd函数
Linux下C语言编程实现spwd函数 介绍 spwd函数 功能:显示当前目录路径 实现:通过编译执行该代码,可在终端中输出当前路径 代码实现 代码链接 代码托管链接:spwd.c 所需结构体.函数. ...
- Linux基础与Linux下C语言编程基础
Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...
- LINUX下C语言编程调用函数、链接头文件以及库文件
LINUX下C语言编程经常需要链接其他函数,而其他函数一般都放在另外.c文件中,或者打包放在一个库文件里面,我需要在main函数中调用这些函数,主要有如下几种方法: 1.当需要调用函数的个数比较少时, ...
- 【转】Linux基础与Linux下C语言编程基础
原文:https://www.cnblogs.com/huyufeng/p/4841232.html ------------------------------------------------- ...
- Linux C语言编程基本原理与实践
Linux C语言编程基本原理与实践(2018-06-16 19:12:15) Linux C语言编程基本原理与实践 高效的学习带着目的性: 是什么 -> 干什么 -> 怎么用 重识C语言 ...
- P4语言编程快速开始 实践二
参考:P4语言编程快速开始 上一篇系列博客:P4语言编程快速开始 实践二 Demo 2 本Demo所做的修改及实现的功能: 为simple_router添加一个计数器(counter),该计数器附加( ...
随机推荐
- C#中var关键字【转】
[转]http://blog.csdn.net/courageously/article/details/5695626 var关键字是C# 3.0开始新增的特性,称为推断类型 . 可以赋予局部变量推 ...
- C#高效导出Excel(IList转DataTable,DataSet)
微软的Excel操作类导出Excel会很慢,此方法简单的把表中内容以字符串的形式写入到Excel中,用到的一个技巧就是"\t". C#中的\t相当于Tab键,写入到Excel中时就 ...
- Android基础知识巩固:关于PendingIntent和广播
平时使用广播的场合比较多,但细节的东西,看过了也没有总结,以至于某些场合有小问题,还是要把原理和属性搞清楚才能运用自如. 其实也是自己比较懒,先看别人的blog,有个概念再去官网看英文的能好理解一些. ...
- JavaScript知识(二)
你要保守你心,胜过保守一切,因为一生的果效,是由心发出的.————O(∩_∩)O... ...O(∩_∩)O...老师因有事下午没来上课,今天就只把中午讲的知识总结一下.由于昨天只是讲了JavaScr ...
- iOS网络请求之---GET和POST
get是从服务器上获取数据,post是向服务器传送数据.前者把参数数据加在了将参数直接写在访问路径上.操作简单,不过容易被外界看到,安全性不高,地址最多255字节,后者则是将参数放到body里面.PO ...
- BZOJ 2245: [SDOI2011]工作安排( 费用流 )
费用流模板题..限制一下不同愤怒值的工作数就可以了. ------------------------------------------------------------------------- ...
- Python2.7.3 学习——第一个程序 Hello Python World
Hello World 每学一门语言开始的第一程序都是Hello World ,当然了Python也不例外,下面开始我们的Python第一个程序编写: 1,命令行: (1)打开终端,输入python, ...
- 类比的方法学习Performance_schema
引用自:http://www.javacoder.cn/?p=332 MySQL在5.6版本中包含了一个强大的特性——performance-schema,合理的使用这个数据库中的表,能为我们解决一些 ...
- BBM(Bad Block Management)坏块管理
不管WL算法如何高明,在使用中都会碰到一个头痛的问题,那就是坏块,所以一个SSD必须要有坏块管理机制.何谓坏块?一个闪存块里包含有不稳定的地址,不能保证读/写/擦时数据的准确性. ...
- 简单测试运行时类信息(RTTI),附详细例子
新建一个单元文件,填写如下代码,然后保存为 ClassInfoUnit.pas,这里定义了一个结构,用来读取指定类的信息. unit ClassInfoUnit; interface uses Cla ...