
Linux C
阳光柠檬_
...
展开
-
关于sizeof()的返回值
前段时间看<C专家编程>,有一段关于sizeof()的代码,关于运行结果,大部分都会答错。列出来,防止以后在代码中出现类似BUG。。。#define INT_LEN sizeof(int)int main(){ int d = -1; int n = sizeof(int); int m = 2; printf("NUM = %d\n",NUM); prin原创 2013-10-29 11:09:07 · 2666 阅读 · 0 评论 -
ubuntu下 gstreamer 的配置及播放音视频例子
官方网址:http://gstreamer.freedesktop.orgGstreamer安装:使用sudo apt-get install 安装sudo apt-get install libgstreamer0.10-dev gstreamer-tools gstreamer0.10-tools gstreamer0.10-docsudo ap原创 2015-04-13 15:04:07 · 20338 阅读 · 1 评论 -
Linux下编译Android平台的ffmpeg库
Linux下编译Android平台的ffmpeg库在Linux平台下编译要方便些,我这里使用的环境是openSUSE,用Ubutunu也是一样的。首先你需要Android-NDK 和ffmpeg源码,不同的版本里的文件结构有所差别,编译环境也有所不同。我这里使用的是以下两个版本:android-ndk-r8-linux-x86.tar.bz2ffmpeg-0.7.17.tar.gz1. 解压原创 2015-05-23 17:07:23 · 3520 阅读 · 2 评论 -
linux C sqlite3 mysql
/* ********** gcc main.c -lsqlite3 -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ************SQLITE_OK = 0; 返回成功SQLITE_ERROR = 1; SQL错误或错误的数据库SQLITE_INTERNAL = 2; An internal logic error in SQL原创 2015-08-31 23:52:47 · 1248 阅读 · 0 评论 -
linux select 模型详解
在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状态。(我们是要想从一个文件描述符中读或者写,还是关注一个描述符中是否出现异常) •我们要等待多长时间。(我们可以等待无限长的时间,等待固定的一段时间,或者根本就不等待)转载 2015-08-31 21:24:18 · 1889 阅读 · 0 评论 -
linux下启动mysql以及设置远程访问
启动mysql服务:/usr/sbin/mysqld 进入本地mysql查看:mysql –u root –p passwordmysql> show databasesmysql> use `testTable`mysql> show tables设置远程能访问mysql> GRANT ALL PRIVILEGES ON *.* T原创 2015-09-16 09:49:57 · 660 阅读 · 0 评论 -
PCM音频文件格式的头信息
一个裸的PCM格式音频数据,如果不带头信息,不知道其采样率等相关信息,就无法用播放器播放出来。下面是默认的头信息格式://音频头部格式struct wave_pcm_hdr{ char riff[4]; // = "RIFF" SR_DWORD size_8;原创 2015-11-06 14:56:29 · 64762 阅读 · 0 评论 -
优化打印调试信息(可变参数)
#include #include #define MAX_MSG 1000//#define __D(fmt, args...) printf("debug: " fmt, ## args)#define __D(fmt,...) logOut(__FILE__,__FUNCTION__,__LINE__,fmt"",##__VA_ARGS__)int logOut(cons原创 2013-10-29 09:09:59 · 1309 阅读 · 0 评论 -
Linux下NFS配置与tftp配置
1. NFS配置vi /etc/export 加入所需要共享目录。例如:/home/liukang/workship 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)修改完毕后,运行#exportfs -a 使改变生效。#/etc/init.d/nfsserver start 启动NFS服务器。#ex原创 2014-09-22 11:50:11 · 1668 阅读 · 0 评论 -
Linux下Sig_信号的捕捉
方式一:#include <pthread.h>static void * sig_thread(void *arg){ sigset_t *set = (sigset_t *) arg; int s, sig; for (;;) { s = sigwait(set, &sig); if (s == 0) DBG("[原创 2016-03-25 10:43:00 · 1421 阅读 · 0 评论 -
C++回调函数实现
库的头文件中申明回调函数接口:#ifndef BYTE#define BYTE char#endiftypedef void (CALLBACK* fun_SetMediaVideoStreamSendCallback)(const BYTE* chBuff, int iBufLen);BUILD_DLL_EXPORT void sdl_set_videostream_callback(fu原创 2016-06-30 15:47:53 · 1102 阅读 · 0 评论 -
纯C++实现的HTTP请求封装(POST/GET)
纯C++实现的HTTP请求(POST/GET),支持windows和linux, 进行简单的封装, 方便调用。实现如下:#include "HttpConnect.h"#ifdef WIN32#pragma comment(lib,"ws2_32.lib")#endifHttpConnect::HttpConnect(){#ifdef WIN32 //此处一定要初始化一下,否则ge原创 2016-09-14 15:18:41 · 27921 阅读 · 21 评论 -
libcurl http get
#include <curl.h>#define XML_MAX_SIZE 1024*16char gbuf[XML_MAX_SIZE] = {0};int len = 0;static size_t string_write(char *ptr, size_t size, size_t nmemb, char *buf){ pthread_mutex_lock(&write原创 2016-11-16 16:54:04 · 441 阅读 · 0 评论 -
Ubuntu上搭建mysql服务器及外部访问
安装mysql服务器和客户端liukang@liukang-virtual-machine:~$ sudo apt-get install mysql-server mysql-client判断mysql是否安装成功: 启动mysql服务liukang@liukang-virtual-machine:~$ sudo service mysql restart命令行登录mysql:liukang@l原创 2017-06-10 11:25:10 · 1787 阅读 · 0 评论 -
回调函数实现类似QT中信号机制
1. 定义回调接口类:class UIcallBack{public: virtual void onAppActivated() = 0; virtual void onShowMore() = 0;};2. 定义一个类 继承 回调接口类,并包含你要监听的类class AppManager : public UIcallBack{public:原创 2015-05-15 11:54:39 · 6265 阅读 · 2 评论 -
Linux上用nginx搭建RTMP服务器
参考文章:https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/我的环境ubuntu1、 安装编译 nginx 所需要的库 sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev翻译 2016-11-21 18:18:26 · 6476 阅读 · 0 评论 -
linux下用sed和grep命令替换目录下所有文件中的字符串
试例如下:第三条命令是将当前目录下代码中所有的"arm-none-linux-gnueabi" 替换成 "arm-linux"sed -i 's/arm-none-linux-gnueabi-g++/arm-linux-g++\ -O2\ -I\$\(INC\)\ -I\$\(INCSYS\)\ -static/g' `grep arm-none-linux-gnueabi-g++原创 2015-02-04 10:09:09 · 16828 阅读 · 0 评论 -
对文件或数据进行CRC校验
用于对一个文件进行CRC校验,以确保文件数据传输的正确性。废话不多说,直接上代码!crc32.h#ifndef CRC_32_H#define CRC_32_H#ifdef __cplusplusextern "C" {#endif void init_crc_table(void); unsigned int crc32(unsigned int crc,unsi原创 2014-12-05 11:26:55 · 12270 阅读 · 0 评论 -
telnet在arm平台的移植
utelnetd交叉编译下载utelnetd-0.1.9 #vi Makefile CROSS = arm-linux- LDFLAGS += -static //在有静态库的情况下使用,如果编译出现段错误,请去掉重试 #make执行./utelnetd -d转载 2014-11-28 16:19:52 · 1978 阅读 · 0 评论 -
swap的三种方式
#include #define LEN 4void swap1(int *x, int *y){ *y = *x ^ *y; *x = *x ^ *y; *y = *x ^ *y;} void swap2(int *x, int *y){ *x = *x + *y; *y = *x - *y; *x = *x - *y;} void swap3(int *x, int原创 2013-10-29 09:15:31 · 2611 阅读 · 0 评论 -
获取本地时间
#include #include int main(){ time_t tnow; struct tm *tmnow; time(&tnow); tmnow = localtime(&tnow); printf("%4d-%2d-%2d %02d:%02d:%02d week:%d\n",(1990 + tmnow->tm_year),(1 + tmnow->tm_mon),t原创 2013-10-28 17:31:57 · 875 阅读 · 0 评论 -
进程间通讯(三)IPC之共享内存
发送:#include #include #include #include #include #define BUF_SIZE 1024 #define MYKEY 25 int main() { int shmid; char *shmptr; if((shmid = shmget(MYKEY,BUF_SIZE,IP原创 2013-10-29 15:01:21 · 930 阅读 · 0 评论 -
进程间通讯(二)IPC之消息队列
创建队列号:#include #include #include int main(int argc, char *argv[]){ int id; id = msgget(IPC_PRIVATE, IPC_CREAT|0660); printf("id = %d\n", id); return 0;}发送:#include #include原创 2013-10-29 14:58:00 · 991 阅读 · 0 评论 -
进程间通讯(一)IPC之管道FIFO
发送:#include#include#include#include#include#include#include#define FIFO_SERVER "./myfifo"main(int argc,char** argv){ int fd; char w_buf[100]; int nwrite; if(fd==-1) if(errno==ENXIO)原创 2013-10-29 14:28:23 · 1021 阅读 · 0 评论 -
多线程间的同步
实例:#include #include #include #include #define MAX 10pthread_t thread[2];pthread_mutex_t mut;int number=0, i;void *thread1(){ printf ("thread1 : I'm thread 1\n"); for (i = 0; i < MAX原创 2013-10-29 13:53:11 · 815 阅读 · 0 评论 -
状态机编程技巧:状态表与函数表
没有swith case那样可以直接能通过程序代码看到各 状态 的跳转与 状态机 的执行步骤,但这种 状态表与函数表 实现的 状态机。代码简洁,无遗漏状态,经典!简单实例:#include char str[128] = " ./a.out 100 200 ";int argc;char * argv[16];int i = 0;void act_save原创 2013-10-31 10:55:19 · 4560 阅读 · 0 评论 -
Makefile的简介
看了“跟我一起写Makefile”, 总结了一下Makefile的一些用法, 调试Makefile的过程中的c源文件和Makefile中间文件请查看我的资源:http://download.youkuaiyun.com/detail/yunjingguang/72713011. Makefile的作用makefile 就像一个 Shell脚本一样,其中也可以执行操作系统的命令。makefile 带转载 2014-04-30 10:01:52 · 1311 阅读 · 0 评论 -
UDP通讯实例
其实都是之前在网上积累的一些基础代码,调试成功后,做个代码笔记,方便以后查阅。UDP没有严格意义上的服务器端 和 客户端,但一般把有bind()的当作服务器。服务器端:#include #include #include #include #include #include #include #include #define SERV_PORT 800原创 2013-10-31 11:02:14 · 1126 阅读 · 0 评论 -
Linux实现字符设备驱动的基础步骤
Linux应用层想要操作kernel层的API,比如想操作相关GPIO或寄存器,可以通过写一个字符设备驱动来实现。1、先在rootfs中的 /dev/ 下生成一个字符设备。注意主设备号 和 从设备号。可用如下shell脚本生成:if [ ! -e audioIN ];then sudo mknod audioIN c 240 0 fi生成的设备为 /d原创 2014-07-16 15:57:39 · 3496 阅读 · 0 评论 -
Linux音频编程
虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程框架。一、数字音频音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作转载 2014-06-28 17:59:04 · 1158 阅读 · 0 评论 -
Linux在应用层读写寄存器的方法
可以通过操作/dev/mem设备文件,以及mmap函数,将寄存器的地址映射到用户空间,直接在应用层对寄存器进行操作,示例如下:原创 2014-05-22 16:39:15 · 18006 阅读 · 5 评论 -
sscanf正则表达式与string快速提取key=value
sscanf正则表达式的一种用法,用来获取配置文件(key=value)中的值比较方便。#include int main(){ char buf[]="abcdefg=456"; char s[10]={0}; int n=0; sscanf(buf,"%[^=]=%d",s,&n); printf("%s\n",s); printf("%d\n",n);原创 2013-10-29 11:46:15 · 3320 阅读 · 0 评论 -
TS流分析
一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video、Audio以及我们需要学习的PAT、PMT等信息。因此,我们首先需要了解TS流是什么,以及TS流是怎样形成、有着怎样的结构。(一) TS流、PS流、PES流和ES流都是什么? ES流(Element转载 2014-08-25 15:27:25 · 1493 阅读 · 0 评论 -
共享内存,多进程间共享结构体
共享内存 中 存结构体,多线程多进程间实现共享。原创 2014-09-11 16:32:26 · 5240 阅读 · 0 评论 -
4X4矩阵键盘扫描程序
4X4矩阵键盘扫描:1. 4根行线的GIO均设为Output,根列线的GIO均设为Input;2. 4根行线的GIO分别置为0111、1011、1101、1110,读逐一读取列线GIO的值,可确定是哪一个按键;电路图如下:原创 2014-10-10 16:24:08 · 25105 阅读 · 1 评论 -
简单的串口通讯程序
很早以前写过串口通讯的代码,今天又要用到,做了一个简单的类封装。代码如下:rs485Test.h#include #include #include #include #include #include #include #include #include class RS485 { public: /////////////////////////原创 2014-10-10 16:54:09 · 2250 阅读 · 0 评论 -
How To Install Java with Apt-Get on Ubuntu 16.04
转载自: https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04IntroductionJava and the JVM (Java’s virtual machine) are widely used and required for many kinds o转载 2017-12-17 12:10:45 · 374 阅读 · 0 评论