linux c
文章平均质量分 88
ccccccsdn
这个作者很懒,什么都没留下…
展开
-
Linux下的多进程编程
什么是一个进程?当用户敲入命令执行一个程序的时候,对系统而言,它将启动一个进程。但和程序不同的是,在这个进程中,系统可能需要再启动一个或多个进程来完成独立的多个任务。多进程编程的主要内容包括进程控制和进程间通信。 1 Linux下进程的结构Linux下一个进程在内存里有三部分的数据,就是"代码段"、"堆栈段"和"数据段"。这三个部分也是构成一个完整的执行序列的必要的部分。转载 2015-05-08 09:25:48 · 406 阅读 · 0 评论 -
CFLAGS 与 CXXFLAGS
CC 与 CXX: 这是 C 与 C++编译器命令。默认值一般是 “gcc” 与 “g++”。CPPFLAGS will be given to the Cpreprocessor 这是用于预处理阶段的选项。CFLAGS 与 CXXFLAGS CFLAGS 表示用于 C编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译转载 2015-11-12 15:49:38 · 1766 阅读 · 0 评论 -
TEST_F与TEST
TEST_F与TEST的区别是,TEST_F提供了一个初始化函数(SetUp)和一个清理函数(TearDown),在TEST_F中使用的变量可以在初始化函数SetUp中初始化,在TearDown中销毁,并且所有的TEST_F是互相独立的,都是在初始化以后的状态开始运行,一个TEST_F不会影响另一个TEST_F所使用的数据,下面是一个例子。 需要测试的代码:[cpp]转载 2015-11-12 16:02:30 · 1181 阅读 · 0 评论 -
Weak Alias
Weak Alias 跟 Weak Reference 完全没有任何关系,不过是我在看到 Weak Reference的时候想到的而已。Weak Alias 是 gcc扩展里的东西,实际上是函数的属性。这个东西在库的实现里面可能会经常用到,比如 glibc 里面就用了不少。抄录一段gcc 手册里面的话解释下函数属性是干啥的,In GNU C, you declare certain t转载 2015-12-15 16:03:13 · 252 阅读 · 0 评论 -
linux socket编程
转载自:作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接).“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间转载 2015-12-01 16:41:16 · 316 阅读 · 0 评论 -
小printf大作用(用日志打印的方式调试程序)
转载自蜗窝科技,www.wowotech.net。前言 一般来说,初学编程者所写的第一个程序,就是使用printf打印“Hello world”。其实printf的功效远不只这些,在程序调试方面,printf也有非常大的用处。 “蜗蜗”在接触Linux driver开发之前,学习过桌面程序开发(如Turbo C、Visual C等),也从事了一段时间的嵌转载 2016-01-07 15:32:52 · 596 阅读 · 0 评论 -
宏定义中#和##符号的使用和宏定义展开
有一道经典的C语言问题,关于宏定义中#和##符号的使用和宏定义展开问题 程序如下:#include #define f(a,b) a##b#define g(a) #a#define h(a) g(a) int main(){ printf("%s\n", h(f(1,2))); printf("%s\n", g(f(1,2转载 2015-12-25 20:24:48 · 478 阅读 · 0 评论 -
Strlcpy和strlcat
英文原文: http://www.gratisoft.us/todd/papers/strlcpy.html 英文作者: Todd C. Miller, Theo de Raadt译者:林海枫译本地址:http://blog.csdn.net/linyt/archive/2009/07/27/4383328.aspx注:本译文版权由译者所拥有,欢迎转载,但请转载 2016-03-25 09:38:33 · 676 阅读 · 0 评论 -
select与阻塞和非阻塞
这2天一直和同事在讨论socket的非阻塞用在什么场合,并且认为在select时,使用的socket要设置成阻塞的,今天在网上搜了一下,才发现,原来,我们搞错了,一个套接字阻塞或者不阻塞,select就在那里,它可以针对这2种套接字使用,对任何一种套接字的轮询检测,超时时间都是有效的,区别就在于:当select完毕,认为该套接字可读时,1 .阻塞的套接字,会让read阻塞,直到读到转载 2016-03-25 10:57:28 · 654 阅读 · 0 评论 -
poll()
struct pollfd2010年04月15日 星期四 下午 03:59int poll (struct pollfd *fds, size_t nfds , int timeout);struct pollfd {int fd; /* 文件描述符 */short events; /* 等待的事件 */short revents; /* 实际发生转载 2016-05-11 10:59:07 · 277 阅读 · 0 评论 -
netlink socket
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火转载 2016-05-09 10:57:54 · 493 阅读 · 0 评论 -
动态库*.so制作-linux
动态库*.so制作-linux linux动态库.so基础知识制作 在linux下制作动态库*.so。 1、linux下动态库的制作//so_test.h#include "stdio.h"void test_a();void test_b();void test_c(); //test_a.c#include "so_test.h"vo转载 2016-06-15 15:00:49 · 534 阅读 · 0 评论 -
linux flock
转载请说明出处:http://blog.csdn.net/cywosp/article/details/300830151. 场景概述 在多线程开发中,互斥锁可以用于对临界资源的保护,防止数据的不一致,这是最为普遍的使用方法。那在多进程中如何处理文件之间的同步呢?我们看看下面的图: 图中所示的是两转载 2016-06-07 15:46:02 · 3388 阅读 · 0 评论 -
linux SIGABRT信号
自己写的程序启动时偶尔会被SIGABRT信号杀死。故查看下SIGABRT的用法。SIGABRT是中止一个程序,它可以被捕捉,但不能被阻塞。处理函数返回后,所有打开的文件描述符将会被关闭,流也会被flush。程序会结束,有可能的话还会core dump。 当程序调用abort(3)时,该进程会向自己发送SIGABRT信号。所以,SIGABRT一般用于信号中一些关键的处理,assert失败时也转载 2016-10-11 15:28:38 · 2579 阅读 · 0 评论 -
free后指针为NULL?
别看 free 和delete 的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。 用调试器跟踪示例程序,发现指针p 被free 以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,p 成了“野指针”。如果此时不把p 设置为NULL,会让人误以为p 是个合法的指针。 如果程序比较长,我们有时记不住p 所指的内存是否已经被释转载 2016-10-11 15:56:54 · 5511 阅读 · 0 评论 -
linux串口编程
转载:---------------------------------------------------------Author :tiger-johnWebSite :blog.csdn.net/tigerjbEmail :jibo.tiger@gmail.comUpdate-Time转载 2015-09-24 14:52:13 · 481 阅读 · 0 评论 -
Linux下Google Test (GTest)测试环境搭建步骤
本文将介绍单元测试工具Google Test(GTest)在Linux操作系统中测试环境的搭建方法。本文属于Google Test使用的基础教程。在Linux中使用Google Test之前,需要对如下知识有一些了解:(1)C/C++编程方法(2)makefile的编写(3)Linux命令行操作(4)GTEST背景知识:它是用来干什么的?它用什么语言编写的?它的一些基本语法?等等转载 2015-11-12 14:58:21 · 529 阅读 · 0 评论 -
Linux守护进程的编程实现
Linux 守护进程的编程方法 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。守护进程的编程转载 2015-05-08 17:06:07 · 335 阅读 · 0 评论 -
孤儿进程与僵尸进程
孤儿进程与僵尸进程[总结]转自http://www.cnblogs.com/Anker/p/3271773.html1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真转载 2015-05-08 16:47:54 · 331 阅读 · 0 评论 -
linux 获取网络相关信息
getifaddrs()和struct ifaddrs的使用,获取本机IP博客分类: Linux C编程 ifaddrs结构体定义如下:C代码 struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in list */转载 2015-05-11 10:04:36 · 541 阅读 · 0 评论 -
ARM Linux Oops使用小结
内核Oops小结出现Oops消息的大部分错误时因为对NULL指针取值或者因为用了其他不正确的指针值。Oops如何产生的解释如下: 由于处理器使用的地址几乎都是虚拟地址,这些地址通过一个被称为“页表”的结构被映射为物理地址。当引入一个非法指针的时候,分页机制无法将该地址映射到物理地址,此时处理器就会向操作系统发出一个“页面失效(page fault)”的信号。如果地址非法“换入(p转载 2015-05-15 17:11:45 · 621 阅读 · 0 评论 -
ARM 内核SP,LR,PC寄存器
深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性。转载 2015-05-15 17:05:31 · 629 阅读 · 0 评论 -
linux 只启动一个进程实例
linux 只启动一个进程实例====================================================================我使用的是第一种方法,文件锁。参考《UNIX环境高级编程》13.5,14.3实现===================================================================转载 2015-05-15 11:10:13 · 2811 阅读 · 0 评论 -
ARM函数调用时参数传递规则
ARM函数调用时参数传递规则之前在学习如何在C语言中嵌入汇编时有了解到C语言之前的参数调用是使用寄存器R0传递第一个参数,R1传递到第二个..一直到R3传递第四个参数.但是 实际上有时可能传递的参数非常多,超过8个,或是参数中有浮点数之类,参数也会超过4个寄存器,对于超出的部份并不使用R4,而是使用堆栈的方式.对于ARM体系来说,不同语言撰写的函数之间相互调用(mix ca转载 2015-05-15 16:54:20 · 668 阅读 · 0 评论 -
linux 下获取当前网络连接状态的两种方法
#include #include #include #include #include #include #include #include #define ETHTOOL_GLINK 0x0000000a /* Get link status (ethtool_value) */ typedef enum { IFSTATUS_UP, I转载 2015-05-08 10:06:38 · 383 阅读 · 0 评论 -
Linux下的多线程编程
1 线程创建与取消 1.1 线程创建1.1.1 线程与进程相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。 线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相转载 2015-05-08 09:31:21 · 426 阅读 · 0 评论 -
RW、RO、ZI段的含义
一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将我的一些关于RO,RW和ZI的理解写出来,希望能对大家有所帮助。 要了解RO,RW和ZI需要首先了解以下知识: ARM程序的组成 此处所说的“ARM程序”是指在ARM系统中正在执行的程序,转载 2015-06-02 22:37:57 · 910 阅读 · 0 评论 -
maclloc和calloc的区别
函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。malloc()函数有一个参数,即要分配的内存空间的大小:void *malloc(size_t size);calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。void *calloc(size_t numElements,size_t转载 2015-05-22 14:32:00 · 990 阅读 · 0 评论 -
linux 下动态链接库的制作与使用
linux 下动态链接库的制作与使用动态链接库*.so的编译与使用- -动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c转载 2015-06-03 10:25:24 · 312 阅读 · 0 评论 -
信号
【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。 【关键字】软中断信号,signal,sigaction,kill,si转载 2015-06-26 13:10:41 · 338 阅读 · 0 评论 -
GTK+的优点与QT的优点
想看看图形界面系统的优缺点,转载了网友整理的: GTK+的优点与QT的优点整理 在嵌入式 Linux 下有很多图形界面系统 GUI,包括 Qt/Embedded,FLTK,Microwindows 和 GTK+ 等。作为一个开发者,到底使用什么样的 GUI 系统呢?对一个系统,将它改造为符合你的需求,你要做多少修改呢?修改后的系统的尺寸一般会有多大呢?这些都是开发人员会遇到的问题。我转载 2015-06-12 11:21:54 · 631 阅读 · 0 评论 -
多进程 写文件 导致文件清空
一个程序更改配置文件中的字段,脚本中也使用sed修改该配置文件。发现有时候配置文件内容被清空,查看此篇文档后确实发现程序内打开文件时使用了w。===============转载 一直以为多进程读写文件是安全的,只有fflush和fclose才会真正修改文件内容,诸多开源项目的日志系统也基本都是多线程的,asterisk同样没有为ast_log建立一个专门的日志线转载 2016-10-14 15:56:49 · 1263 阅读 · 0 评论