linux系统编程
文章平均质量分 88
希哈科技
希哈科技 (XIHA) 致力于成为全球领先的AIoT产品与技术服务解决方案提供商。把 “赋能万物,机器智能” 作为核心价值观。相信所秉承的 “星球万物,智慧物联” 的使命,会持续为客户创造长期价值。
展开
-
Linux消息队列
一、概述System V三种IPC:消息队列,信号量,共享内存。这三种IPC最先出现AT&T System V UNIX上面,并遵循XSI标准,有时候也称为XSI IPC本文先探讨消息队列:1.消息队列允许进程以消息的形式交换数据。读写都是针对整条消息,不能读写消息的一部分,不像管道那样可以以流的形式读写任意字节。2.消息队列除了数据外,还有一个整数来表示该消息的类型。读取消息的时转载 2018-02-04 13:26:34 · 347 阅读 · 0 评论 -
Linux_C目录扫描程序
说白了就是对整棵目录树进行深度优先遍历即可。[cpp] view plain copy#include #include #include #include #include #include #include void printdir(const char *dir, int转载 2018-02-06 10:33:01 · 357 阅读 · 0 评论 -
linux递归扫描路径下的所有文件
#include #include #include #include #include #include void dir_oper(char const*path);int main(int argc, char const *argv[]){char const*path = argv[1];struct stat s_buf;转载 2018-02-06 10:57:15 · 1238 阅读 · 1 评论 -
execl 和system的区别
在c中又时候需要执行一个shell或者bin 时候 就需要用到system 或者execl 函数系类。 那么我们怎样来选这个函数能?execl 这个函数系列 他会代替调用它的程序 执行完成后 不会回到主调程序中 直接用新的execl create的shell替代了 原来的程序。system 这个函数不同 他会fork一个子程序中 但他会在主调程序中等待 system的转载 2018-02-07 10:16:08 · 667 阅读 · 0 评论 -
linux进程通信实例
linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间转载 2018-02-07 15:11:38 · 579 阅读 · 0 评论 -
如何编写一个可靠的linux守护进程
linux服务端程序都需要提供7 * 24不间断的服务,如何保证工作进程一直不退出或者不被kill掉,常见的方法就是启动一个守护进程来检测工作进程的状态,如果发现工作进程退出,就再fork一个出来。一般的实现见下面一段代码:C代码 // 守护进程(父进程)int status;for ( ; ; ) { if ( 0 == ( pid = for转载 2018-02-07 15:19:52 · 278 阅读 · 0 评论 -
S3C2440 madplayer mp3移植笔记
声卡移植测试完成,但只能播放wav格式的歌曲,对于我们来说mp3应用更广泛一些,经过昨晚的努力,madplayer移植成功,听着自己的mp3心里很爽呀,也许它足够简陋,但它给我们带来的乐趣是让人热血沸腾的,感谢开源社区默默奋斗的人,感谢网上分享成功经验的人,致敬。1,下载源码http://sourceforge.net/projects/mad/files/madplayer-0.15转载 2018-02-07 15:25:17 · 455 阅读 · 0 评论 -
进程和线程的区别
很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。我想,只要你不是整天都写那种int main转载 2018-02-07 15:29:53 · 196 阅读 · 0 评论 -
arm-linux一句话备忘录
1.uboot传递给linux内核的nfs启动命令行:setenv bootargs mem=64M console=ttyS0,57600 root=/dev/nfs rw nfsroot=192.168.1.6:/home/linucos/ newmsg/nfsroot nfsaddrs=192.168.1.8:192.168.1.6:192.168.1.1:255.255.2转载 2018-02-07 15:31:48 · 331 阅读 · 0 评论 -
嵌入式 十个最值得阅读学习的C开源项目代码
1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。 下载链接:http://home.tiscali.cz/~cz210552/we转载 2018-02-07 15:34:56 · 1346 阅读 · 0 评论 -
MPlayer从模式说明
slave模式协议一、简介:默认mplayer是从键盘上获得控制信息mplayer另外提供了一种更为灵活的控制方式,用来进行播放控制——slave模式在slave模式下,MPlayer为后台运行其他程序,不再截获键盘事件,MPlayer会从标准输入读一个换行符(\n)分隔开的命令。二、操作:#mplayer -input cmdlist//会打印出一份当前mplayer所支持的所有slave模式的...转载 2018-02-08 10:50:46 · 583 阅读 · 0 评论 -
Ubuntu下Mplayer安装配置
1. 安装mplayer$sudo apt-get install mplayer-fonts mplayer mplayer-skins mozilla-mplayer2. 安装解码库:到http://www.mplayerhq.hu/MPlayer/releases/codecs/ 下载essential-20071007.tar.bz2# tar -xjf essential-2007100...转载 2018-02-08 10:51:44 · 2045 阅读 · 0 评论 -
S_ISREG等几个常见的宏 struct stat
S_ISLNK(st_mode):是否是一个连接.S_ISREG(st_mode):是否是一个常规文件.S_ISDIR(st_mode):是否是一个目录S_ISCHR(st_mode):是否是一个字符设备.S_ISBLK(st_mode):是否是一个块设备S_ISFIFO(st_mode):是否 是一个FIFO文件.S_ISSOCK(st_mode):是否是一个SOCKET转载 2018-02-06 09:42:14 · 281 阅读 · 0 评论 -
linux下mplayer播放器应用程序总结
一:mplayer简介MPlayer是一款开源的多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流作业系统使用,例如Linux和其他类Unix作业系统、微软的视窗系统及苹果电脑的Mac OS X系统。MPlayer是建基于命令行界面,在各作业系统可选择安装不同的图形界面。因为linux下都是命令行的操作方式,所以对mplayer的各种操作都是用命令来实现的,这次主要用的是转载 2018-02-06 00:10:02 · 1666 阅读 · 1 评论 -
Linux信号量
System V IPC(2)-信号量一.概述System V信号量与System V消息队列不同。它不是用来在进程间传递数据。它主要是来同步进程的动作。1.一个信号量是一个由内核维护的整数。其值被限制为大于或等于02.可以在信号量上加锁或减少一个数量。3.当一个减操作把信号减到小于0时,内核会阻塞调用进程,直到另一操作把信号恢复,阻塞才会解除。4.常用的信号量是二进制信号转载 2018-02-04 14:16:08 · 312 阅读 · 0 评论 -
linux共享内存
System V IPC(3)-共享内存1.共享内存允许多个线程共享物理内存的同一块内存区。2.与管道和消息队列不同,共享内存在用户内存空间,不需要内核介入。降低了内核和用户缓存区的数据复制开销。所以这种IPC速度比较快。3.多个进程共享内存时需要其他同步机制来控制临界区,如上一篇的信号量1.创建或打印共享内存#include int shmget(key_t key, s转载 2018-02-04 21:26:28 · 185 阅读 · 0 评论 -
linux内存映射
内存映射是在调用进程的虚拟地址空间创建一个新的内存映射。内存映射分为2种:1.文件映射:将一个普通文件的全部或者一部分内容映射到进程的虚拟内存中。映射后,进程就可以直接在对应的内存区域操作文件内容!2.匿名映射:匿名映射没有对应的文件或者对应的文件是虚拟文件(如:/dev/zero),映射后会把内存分页全部初始化为0.当多个进程映射了同一个内存区域时,他们会共享物理内存的相同分页。转载 2018-02-04 22:51:59 · 1066 阅读 · 0 评论 -
linux线程模型
历史上线程的3种实现模型一.概述 这里以Linux为例。Linux历史上,最开始使用的线程是LinuxThreads,但LinuxThreads有些方面受限于内核的特性,从而违背了SUSV3 Pthreads标准。即它要根据内核的特性来实现线程,有些地方没有遵循统一的标准转载 2018-02-04 22:54:17 · 394 阅读 · 0 评论 -
linux线程互斥锁
linux线程同步(1)-互斥量一.概述 互斥量是线程同步的一种机制,用来保护多线程的共享资源。同一时刻,只允许一个线程对临界区进行访问。互斥量的工作流程:创建一个互斥量,把这个互斥量的加锁调用放在临界区的开始位置,解锁调用放到临界区的结束位置。当内核优先把某个线程调度到临转载 2018-02-04 22:55:36 · 258 阅读 · 0 评论 -
linux线程条件变量
linux线程同步(2)-条件变量一.概述 上一篇,介绍了互斥量。条件变量与互斥量不同,互斥量是防止多线程同时访问共享的互斥变量来保护临界区。条件变量是多线程间可以通过它来告知其他线程某个状态发生了改变,让等待在这个条件变量的线程继续执行。通俗一点来讲:设置一个条件变量让线程转载 2018-02-04 22:56:36 · 581 阅读 · 0 评论 -
linux线程读写锁
linux线程同步(3)-读写锁一.概述 读写锁与互斥量的功能类似,对临界区的共享资源进行保护!互斥量一次只让一个线程进入临界区,读写锁比它有更高的并行性。读写锁有以下特点:1.如果一个线程用读锁锁定了临界区,那么其他线程也可以用读锁来进入临界区,这样就可以多个线程并行操转载 2018-02-04 22:57:33 · 330 阅读 · 0 评论 -
linux线程自旋锁
linux线程同步(4)-自旋锁自旋锁与互斥量功能一样,唯一一点不同的就是互斥量阻塞后休眠让出cpu,而自旋锁阻塞后不会让出cpu,会一直忙等待,直到得到锁!!!自旋锁在用户态使用的比较少,在内核使用的比较多!自旋锁的使用场景:锁的持有时间比较短,或者说小于2次上下文切换的时间。自旋锁在用户态的函数接口和互斥量一样,把pthread_mutex_xxx()中mutex换转载 2018-02-04 22:58:25 · 373 阅读 · 0 评论 -
getline()函数实例
getline()函数是什么?百度百科这样解释: getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。linux标准C中使用条件:#define _GNU_SOURCE#include 函数声明:ssize_t ge转载 2018-02-05 17:45:56 · 662 阅读 · 0 评论 -
linux线程屏障
linux线程同步(5)-屏障一.概述 barrier(屏障)与互斥量,读写锁,自旋锁不同,它不是用来保护临界区的。相反,它跟条件变量一样,是用来协同多线程一起工作!!!条件变量是多线程间传递状态的改变来达到协同工作的效果。屏障是多线程各自做自己的工作,如果某一线程完成了转载 2018-02-05 17:46:08 · 465 阅读 · 0 评论 -
linux C常用的字符串操作函数
/*字符串长度函数*/ size_t strlen(const char *string); /*不受限制的字符串函数*/ char *strcpy(char *dst, const char *src); char *strcat(char *dst, const char *src); int strcmp(const char *s1,转载 2018-02-05 18:07:13 · 2302 阅读 · 0 评论 -
linux中的 2> /dev/null
1、文件描述符Linux系统预留可三个文件描述符:0、1和2,他们的意义如下所示:0——标准输入(stdin)1——标准输出(stdout)2——标准错误(stderr)标准输出——stdout假设:在当前目录下,有且只有一个文件名称为123.txt的文件,这时我们运行这个命令【ls 123.txt】,就会获得一个标准输出stdout的输出结果:123.txt错误输出—...转载 2019-01-24 11:11:47 · 675 阅读 · 0 评论