liunx c
恐惧本身不可怕
软件工程师
展开
-
Linux 线程同步的三种方法
线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。 一、互斥锁(mutex) 通过锁机制实现线程间的同步。 初始化锁。在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使用前,要对它进行初始化。 静态分配:pthread_mutex_t mutex = PTHR转载 2015-10-16 14:20:35 · 296 阅读 · 0 评论 -
一些linux 与磁盘相关命令
查看glibc版本信息 rpm -qa | grep glibc原创 2016-09-13 21:15:06 · 539 阅读 · 0 评论 -
grep常用用法
grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 '搜寻字符串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!转载 2016-11-24 11:21:13 · 252 阅读 · 0 评论 -
dlopen函数详解
Linux提供了一套API来动态装载库。下面列出了这些API: - dlopen,打开一个库,并为使用该库做些准备。 - dlsym,在打开的库中查找符号的值。 - dlclose,关闭库。 - dlerror,返回一个描述最后一次调用dlopen、dlsym,或dlclose的错误信息的字符串。 C语言用户需要包含头文件dlfcn.h才能使用上述API。glibc还增加了两个P转载 2016-12-01 17:43:27 · 975 阅读 · 0 评论 -
可重入函数与不可重入函数
主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。 也可以这样理解,重入即表示重复进入,首先它意味着这个函数可以被中断,其次意转载 2016-10-08 15:30:03 · 340 阅读 · 0 评论 -
/bin,/sbin,/usr/sbin,/usr/bin 目录的区别
/bin,/sbin,/usr/sbin,/usr/bin 目录 这些目录都是存放命令的,首先区别下/sbin和/bin: 从命令功能来看,/sbin 下的命令属于基本的系统命令,如shutdown,reboot,用于启动系统,修复系统,/bin下存放一些普通的基本命令,如ls,chmod等,这些命令在Linux系统里的配置文件脚本里经常用到。 从用户权转载 2016-09-29 14:15:31 · 213 阅读 · 0 评论 -
printf 的使用
修饰符 功能 m 输出数据域宽,数据长度左边补空格;否则按实际输出 .n 对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数 - 输出数据在域内左对齐(缺省右对齐) + 指定有符号数的正数前面显示(+) 0 输出数值时原创 2016-09-21 20:15:41 · 298 阅读 · 0 评论 -
信号量、互斥锁
信号量与普通整型变量的区别: ①信号量(semaphore)是非负整型变量,除了初始化之外,它只能通过两个标准原子操作:wait(semap) , signal(semap) ; 来进行访问; ②操作也被成为PV原语(P来源于Dutch proberen"测试",V来源于Dutch verhogen"增加"),而普通整型变量则可以在任何语句块中被访问; 信号量与互斥锁之间的区别:转载 2016-05-31 18:21:39 · 277 阅读 · 0 评论 -
软件框架
1、结构层次要清晰,不能有结构混乱嵌套。 2、软件原则要一致原创 2015-10-31 11:40:19 · 466 阅读 · 0 评论 -
Linux信号量机制(生产者消费者)
该程序为Linux信号量机制实现程序,主要模拟了一般的生产者-消费者问题。(生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等原创 2015-10-16 11:13:17 · 857 阅读 · 1 评论 -
软件设计原则:高内聚低耦合
这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低。 一个程序有50个函数,这个程序执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。编写概要设计的时候设计类或者模块自然要考虑到“高内聚,低耦合”。 在程序的各各模块中,尽量让每个模块独立,相关的处理尽量在单个模块中完成,(该干转载 2015-10-27 20:32:48 · 4339 阅读 · 0 评论 -
gcc编译命令
1.预处理 可以输出test.i文件中存放着test.c经预处理之后的代码。打开test.i文件,看一看,就明白了。后面那条指令,是直接在命令行窗口中输出预处理后的代码. gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。在本例中,预处理结果就是将stdio.h 文件中的内容插入到test.c中了。 gcc -E test.c -o test.i 或 gcc -E test.c转载 2015-07-13 20:54:58 · 358 阅读 · 0 评论 -
如何编写优质C代码
http://blog.csdn.net/zhzht19861011/article/details/45508029转载 2015-08-05 15:25:12 · 352 阅读 · 0 评论 -
ioctl和struct ifreq
转自:http://tech.sunplusedu.com/space/post-4064.aspx 用ioctl获得本地ip地址时要用到两个结构体ifconf和ifreq,它们对于大多数人 来说都是比较陌生的,这里给大家一种比较简单的理解方法,当然只一种帮助 理解的方法,在描述中可能会有一些地方与真实定义有所出入,仅供参考. 首先先认识一下ifconf和ifreq:转载 2015-08-07 09:02:41 · 330 阅读 · 0 评论 -
linux__frameBuffer__操作2--写入和截屏
虽然现在能通过交叉环境编译程序,并push到Android上执行,但那只是console台程序,是不是有些单调呢?下面就要看如何通过Linux的 framebuffer 技术在Android上画图形,关于Linux的framebuffer技术,这里就不再详细讲解了,请大家google一下。 操作framebuffer的主要步骤如下: 1、打开一个可用的FrameBuffer设备; 2、转载 2015-09-16 20:46:02 · 721 阅读 · 0 评论 -
linux 动态库和静态库的区别、制作、使用
我们通常把一些公用函数制作成函数库,供其它程序使用。 函数库分为静态库和动态库两种。 静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。 本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。转载 2015-10-10 15:50:10 · 256 阅读 · 0 评论 -
如何提高c代码运行效率
来自新浪网友 1、嵌入汇编(可移植性不好,不建议采用,尽管它确实有效) 2、尽量用位操作来代替乘、除和取模运算。 eg. 10*8 == 10 10/8 == 10>>3 10%8 == 10 - (10>>3 3、对于需要反复存取的变量,可以把它声明为寄存器变量(register) (1) 只有局部自动变量和形参才可以定义为转载 2015-07-28 14:55:04 · 1522 阅读 · 0 评论 -
struc 字节对齐
总结: 1、结构体对齐过程中以最大类型对齐,结构体大小是其倍数。 2、__attribute__((packed)) 改变其对齐方式为紧凑方式 3、如果有__attribute__((packed)) struct嵌套使用,则每个结构都要使用__attribute__((packed)),遇到一个问题:在没有都使用__attribute__的时候,保存文件之后,下次读取出来的数据丢失了。原创 2017-03-17 11:28:44 · 345 阅读 · 0 评论