linux
文章平均质量分 52
北极星_KK
做最好的自己,让别人来追随。
展开
-
dlopen 时序引起的crash问题
when use dlopen as below,dlhandler=dlopen(DLL_PATH,RTLD_LAZY);if dlopen was called in unsafe sequence, such as called after creating thead.it's possible to cause a race conditionbetween dlopen called by one thread and lazy symbol resolving ...原创 2021-01-25 16:50:54 · 1352 阅读 · 1 评论 -
cmake学习实例
下面是自己写的一个cmake的例子, 编译的过程中碰到了很多麻烦问题, 贴出来分享下。###################################################### minidlna: dms##################################################MACRO( MA_IMPORT_LIB name type lib原创 2016-01-29 17:01:31 · 3527 阅读 · 0 评论 -
多进程学习3
本文主要描述如何启动一个独立的program并实现进程间的通信。 主进程main1:void main( void ) { const char cmd_start[] = "start"; const char cmd_stop[] = "stop"; char str_read_fd[10]; char str_write_fd[10]; int file_pipes原创 2016-01-12 16:23:28 · 652 阅读 · 0 评论 -
多进程学习1
下面是一个使用fork 并运行另外一个程序的例子: main1 程序如下:void main( void ) { pid_t child = fork(); if ( child == -1 ) // this is the child process { printf( "fork err.\n" ); exit(EXIT_FAILURE原创 2016-01-08 17:13:40 · 387 阅读 · 0 评论 -
多进程学习2
多进程学习1讲了fork和execl的用法, 那么system和execl有啥区别呢? 下面是system的例子, code和 上一篇文章一致。 main1:void main( void ) { pid_t child = fork(); if ( child == -1 ) // this is the child process { p原创 2016-01-08 18:55:08 · 306 阅读 · 0 评论 -
SQLite3 C语言API入门
SQLite3 C语言API入门下载SQLite3我们下载sqlite源码包,只需要其中的sqlite3.c、sqlite.h即可。最简单的一个创建表操作转载 2015-09-29 15:14:51 · 412 阅读 · 0 评论 -
linux学习-pipe
转自: http://www.cnblogs.com/biyeymyhjob/archive/2012/11/03/2751593.html 下面管道的例子是多进程之间的用法, 如果在多线程中使用pipe, 在任何一个线程中关闭pipe[0] 或者 pipe[1] 都会导致另外一个线程无法正常使用pipe, 不像多进程中进程1中关闭pipe[0] , 进程2中还可以用pipe[0] 。转载 2015-09-08 16:33:30 · 565 阅读 · 0 评论 -
常见编译错误解决
编译错误1: goto 语句错误dtcp_ake_state_machine.c:742:1: error: jump to label ‘error_exit’ [-fpermissive] error_exit: ^dtcp_ake_state_machine.c:706:14: error: from here [-fpermissive] goto原创 2015-08-21 10:48:48 · 1049 阅读 · 0 评论 -
linux学习---select的用法
select 不仅会改变timeout的值,而且会改变fd_set集合的值。所以调用完一次select后,fd_set和timeout都必须重置.struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseco原创 2015-09-08 16:16:16 · 540 阅读 · 0 评论 -
不同等级的debug信息打印
借鉴android 中logcat的不同等级debug信息, 在c语言层打印debug信息时也可以采用如下的定义来控制debug信息的打印。#define DEBUGLEVEL 4#if (DEBUGLEVEL > 0)#define DTCPLOGE(TAG,args...) printf("[DTCP] E/"); printf(TAG); printf(": "); printf原创 2015-04-13 10:13:29 · 906 阅读 · 0 评论 -
makefile学习3-wildcard和patsubst
notdir,wildcard和patsubst是makefile中几个有用的函数,以前没留意过makefile中函数的用法,今天稍微看看~1、makefile里的函数makefile里的函数使用,和取变量的值类似,是以一个‘$’开始,然后是一个括号里面是函数名和需要的参数列表,多个变量用逗号隔开,像这样 return = $(functionname arg1,arg2,arg转载 2015-04-10 10:40:01 · 652 阅读 · 0 评论 -
shell 脚本的学习例子1
打包文件系统img的脚本如下:#!/bin/shif [ $# != 2 ]; then echo "Usage:$0 size_in_MB fs_floder_name"else rm -fr mnt mkdir mnt dd if=/dev/zero of=./$2.img bs=1M count=$1 echo "y" | mkfs.ext4 -b 4096原创 2015-03-18 10:20:56 · 408 阅读 · 0 评论 -
makefile 学习例子2
TARGET_SINK = sinkTARGET_SERVER = serverSINK_SRC = sink.cSERVER_SRC = server.cSINK_OBJ = sink.oSERVER_OBJ = server.oCXX = arm-linux-gnueabihf-g++INCLUDES = -I/opt/arm/gcc-linaro-arm-linu原创 2015-04-10 10:22:57 · 437 阅读 · 0 评论 -
valgrind -- 安装 -- 缺少 libc6-dbg
valgrind -- 安装 -- 缺少 libc6-dbg 一、下载http://valgrind.org/downloads/current.html二、解压tar -xf valgrind-3.7.0.tar.bz2三、安装./configuremakemake install四、使用转载 2013-12-23 15:58:21 · 11596 阅读 · 4 评论 -
Linux中find常见用法示例
Linux中find常见用法示例·find path -option [ -print ] [ -exec -ok command ] {} \;find命令的参数;pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。-print: find命令将匹配的文件输出到标准输出。-exec: fi转载 2014-12-24 14:22:52 · 506 阅读 · 0 评论 -
linux PATH环境变量设置与读取
在项目开发过程中, 需要根据路径来运行一些脚本或者程序, 开发中不适宜写死为固定的path. 这样移植code或维护都会不太便利, 比较好的做法是配置环境变量并且在code中从环境变量来读取, 这样不同的project还可以配置不同的环境变量但使用同一套code.以下是一些例子:1. 在启动启动运行的脚本中设置如下环境变量: export WIFI_MODULES_PATH=$P原创 2016-01-29 17:17:39 · 949 阅读 · 0 评论 -
mutex和condition的用法
分享一下用到的mutex和condition用法。Mutex一般有两种使用情况,一种是单独使用,保护临界区。一种是和condition配合使用,可以等待某condition拿到之后再向下走。Condition 有两种signal形式, single和 broadcast,下面例子是signal的,做个参考。 pthread_cond_t ake_cond = PTHRE...原创 2015-07-13 11:08:49 · 3962 阅读 · 0 评论 -
线程及进程同步方法分享(三): 进程同步(pthread_cond+互斥量)
线程及进程的同步 可以使用 信号量, 信号的方法。但实际使用过程中遇到一个难题,就是sem_timedwait 使用的是绝对时间, 如果timedwait过程中修改系统时间则会出现异常, timeout 提前退出或timeout 到期后还无法退出。原来的方法:线程同步使用pthread_cond+ mutex的方法可以参考如下文章。https://blog.csdn.net/w...原创 2019-07-16 09:57:44 · 365 阅读 · 0 评论 -
Linux 下进程互斥访问同一片共享内存的问题,
转自: https://www.cnblogs.com/my_life/articles/4538299.htmlhttp://segmentfault.com/a/1190000000630435http://blog.csdn.net/luansxx/article/details/7736618 这里的“不相干”,定义为:这几个进程没有父子关系,也没有 Server/Cl...转载 2019-01-31 11:01:10 · 1077 阅读 · 0 评论 -
线程及进程同步方法分享(二): 进程同步(互斥量)
将 pthread_mutex_t 串接在 共享内存,同时 pthread_mutex_t 设置为进程共享属性,可以实现跨进程同步。 void * ShmCreate( int *iShmId, c8 *pc8Name, u32 u32Shmsize ) { u32 Key; Key = Crc32_ComputeBuf(0, 0, 0); Key = C...原创 2019-02-03 18:00:22 · 453 阅读 · 0 评论 -
线程及进程同步方法分享(一): 线程同步(互斥量)
互斥量的相关API://int pthread_mutex_init (pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);//int pthread_mutex_destroy (pthread_mutex_t *mutex);//int pthread_mutex_trylock (pthread_mutex_t *...原创 2019-02-02 15:59:42 · 336 阅读 · 0 评论 -
内存都去哪了
http://ju.outofmemory.cn/entry/110234 转自: 前两天一台128G内存的oracle主机发生故障触发kdump,最终由于var目录空间不足,导致kdump生成不完全。结合之前redhat给出的建议,crash设置的空间最好大于memory 空间。对此我们做了一个简单的计算,认为kdump主机生成的是运行在内存里的信息 ,虽然主机有128G的内存,不过通过...转载 2018-12-04 15:55:01 · 2407 阅读 · 0 评论 -
2016_随记备忘录
打印进程运行时open的fd数量:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more从一个server往另外一个server copy文档:scp –r xxxx/*[email protected]:/home/xxxxx/< >&"&a...原创 2016-08-01 16:20:08 · 455 阅读 · 0 评论 -
call timerfd_create,return errno=38 function not implemented
timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC);返回errno=38 function not implemented的错误 解决方法:需要在kernel中配置CONFIG_TIMERFD=y 的选项。原创 2017-12-30 16:02:31 · 2532 阅读 · 0 评论 -
查看当前进程打开fd的数量及上限
ulimit -Hn4096cat /proc/sys/fs/file-nr 2048 0 50438cat /proc/sys/fs/file-max50438cat /proc/sys/fs/nr_open 1048576sprintf snprintf vsprintf vsnprintf strcpy strncpy st原创 2017-12-30 15:57:16 · 11127 阅读 · 0 评论 -
技术连接收藏
由于公司网络的原因,不能从外站博客转载原始图片内容,所以保留连接;离奇“undefined reference”错误分析与解决方案http://www.lingcc.com/2012/05/31/12093/#sec-1非常好的一个网站,安排活动,投票等很实用;http://www.doodle.com/android audio系统学习http://ww...原创 2014-01-10 14:11:30 · 1052 阅读 · 1 评论 -
同一个进程内open两次同一文件并读写
今天和同事讨论一个文件是调用两次open是否会成功, 以及交叉读写会有什么结果? FILE* fd1 = NULL; FILE* fd2 = NULL; char buffer1[40]; char *buffer2 = "gggggggggg"; int ret = 0, ret1; fd1 = fopen("./text", "rb+"原创 2016-06-24 14:08:07 · 7998 阅读 · 1 评论 -
谨慎使用BN_bin2bn和BN_bn2bin
BIGNUM *a = NULL; BIGNUM *b = NULL; BIGNUM *c = NULL; unsigned char *xychar= NULL; int i; unsigned char data[20]; const unsigned char testk[20] = { 0x00, 0x01, 0x43, 0xbd, 0x74,原创 2016-03-15 16:49:14 · 15142 阅读 · 8 评论 -
makefile 学习例子1
TARGET = unit_testC_SRCS = main.cC_OBJS = $(patsubst %.c, %.o, $(C_SRCS))CXX = arm-linux-gnueabihf-g++INCLUDES = -I/opt/arm/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/arm-linux-原创 2015-04-10 10:22:09 · 510 阅读 · 0 评论 -
GCC各种调试工具使用简介
http://blog.sina.com.cn/s/blog_6b94d5680101p7fm.htmlGCC:GNU开发的程序编译器 GNU:“GNU‘s Not Unix”,最初是为了实现一个类似unix的自由操作系统,感觉现在已经通常泛指遵循GPL自由软件精神的组织。GPL:GNU通用公共许可证(GNU General Public License),简单的说就是遵循GPL的转载 2014-07-29 18:09:20 · 1730 阅读 · 0 评论 -
linux中shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释摘抄自:ABS_GUIDE下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdflinux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台转载 2014-04-10 23:34:34 · 640 阅读 · 1 评论 -
Norflash启动和nandflash启动
Norflash启动和nandflash启动 Norflash启动情况分析,上电后,Norflash内的程序可直接运行, (一般情况下都是norflash和nandflash搭配使用,norflash比较贵,不会只使用norflash存储所有数据,因为norflash的读取速度快,所以搭配使用时norflash存储uboot和内核,nandflash存储文件系统),因为norflash数据原创 2013-10-16 16:39:20 · 805 阅读 · 0 评论 -
linux平台U盘分区方法
U盘分区及格式化方法找台linux电脑,插入U盘, 格式化,点击Disk Utility 先 unmount volume,然后delete partition 删除分区后create partition先创建FAT分区,大小5-6G适宜(8G),然后选中剩余空间创建第二个分区ext2格式,注意必须取消take ownership of filesystem的默原创 2013-07-17 19:16:47 · 796 阅读 · 0 评论 -
linux配置DHCP
1.配置过程1.1、配置Linux内核使能DHCP相关选项: [*]Networking support --> Networking support Networking options --> [*]Packet socket [*]IP:kernel level autoconfiguration [*] IP:DHCP su转载 2013-06-22 16:42:12 · 4314 阅读 · 0 评论 -
vi 常用命令行
vi 常用命令行1.vi 模式 a) 一般模式: vi 处理文件时,一进入该文件,就是一般模式了. b) 编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作。等按下‘i,I,o,O,a,A,r,R’等 字母之后才能进入编辑模式.通常在linux中,按下上述字母时,左下方会出现'INSERT'或者‘REPLACE’字样,才可以转载 2013-06-20 17:45:14 · 613 阅读 · 0 评论 -
如何去写 Android init.rc
Commands:命令Actions: 动作Triggers:触发条件Services:服务Options: 选项Propertise:属性(1) Commands是一些基本的操作,例如:mkdir /sdcard 0000 system systemmkdir /systemmkdir /data 0771 system systemmkdir /cach转载 2013-06-07 11:31:54 · 906 阅读 · 0 评论 -
linux RamDisk 使用简介
转自: http://linux.chinaunix.net/techdoc/beginner/2008/01/29/977725.shtml linux RamDisk 使用简介1、Ram Disk介绍1.1 什么是Ram DiskRam Disk 就是将内存中的一块区域作为物理磁盘来使用的一种技术。对于用户来说,可以把RAM disk与通常的硬盘分区(如转载 2013-06-07 10:36:20 · 1276 阅读 · 0 评论 -
dns 解析错误 :bad address: www.baidu.com
1 不能ping 外网解决方法: route 查看一下设置,发现没有网关 使用 /sbin/route add default gw 122.XX.XX.254 配置网关 ping 外网IP 没问题了 2 ping www.baidu.com 提示 bad address: www.baidu.com DNS设置有误,解决方法原创 2013-05-31 17:56:24 · 16712 阅读 · 0 评论 -
nsswitch.conf文件详解
转自:http://www.cnblogs.com/cute/archive/2012/05/17/2506342.html一、nsswithch.conf:服务搜索顺序 文件/etc/nsswitch.conf(name service switch configuration,名字服务切换配置)规定通过哪些途径以及按照什么顺序通过这些途径来查找特定类型的信息。还可以指定某个方法奏转载 2013-05-30 19:24:12 · 961 阅读 · 0 评论 -
grep的用法
grep的用法http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/首先创建我们练习grep命令时需要用到的demo文件demo_file。$ cat demo_fileTHIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.this lin转载 2013-05-29 17:22:53 · 1114 阅读 · 0 评论