
linux_application
mcgrady_tracy
这个作者很懒,什么都没留下…
展开
-
线程
1. 创建线程创建线程使用pthread_create函数,函数原型如下:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);引用该函数需要包含头文件pthread.h,在编译时还需要加上-lpthread选项用来链接线原创 2013-07-17 21:40:45 · 836 阅读 · 0 评论 -
Linux 使用uinput创建虚拟input设备
参考了这里:http://thiemonge.org/getting-started-with-uinput代码如下:原创 2014-04-04 15:14:36 · 7357 阅读 · 5 评论 -
V4L2 应用编程
1. 打开设备、关闭设备在V4L2中,打开、关闭设备同打开其他设备没有什么不同。例如:fd = open("/dev/video0", O_RDWR);close(fd);2. 查询设备属性在V4L2编程中,会用到很多的ioctl函数,其中这里会跟一个VIDIOC_QUERYCAP命令,最后一个参数是struct v4l2_capability类型,struct v4l2_原创 2015-05-01 17:44:36 · 1523 阅读 · 0 评论 -
Linux 用户和组编程
在Linux中,每个用户都有一个唯一的用户名和用户id。而用户又可以隶属于一个或多个组,每个组也有一个唯一的组名和组id。1. 密码文件/etc/passwd首先来看密码文件,对系统中的每个用户账户,密码文件/etc/passwd都会专门有一行对其进行描述,每一行都包含7个字段,用冒号分割,例如:root:x:0:0:root:/root:/bin/bash登录名:第一个字段是原创 2015-08-11 11:23:36 · 736 阅读 · 0 评论 -
Linux select和poll系统调用
很多时候,我们调用read函数从文件描述符中读取数据时,如果此时恰好没有数据可读,read系统调用势必会阻塞住。同样,当调用write函数时,而没有空间供我们写入,write系统调用也会被阻塞住,直到有空间被写入时。那么在这种情况下我们为了不阻塞我们的程序,就需要检查文件描述符是否可读或可写。1. select系统调用首先我们来看一段代码:#include #include in原创 2015-08-11 17:50:21 · 1516 阅读 · 0 评论 -
Linux时间编程
1. time_ttime_t记录自1970年1月1日凌晨以来的秒数,在Linux/Unix上定义为long int类型,在32位系统上,time_t最多只能记录2,147,483,647秒,也就是说到了2038年将会产生溢出,但在64位系统上不会出现此问题。那怎么获取这个time_t类型的值呢,使用time函数,原型如下:time_t time(time_t *t);例子如下:#in原创 2013-11-12 14:29:17 · 3731 阅读 · 0 评论 -
Linux 文件相关编程
1. access系统调用access系统调用用于检测所指定的文件访问权限,原型如下:#include int access(const char *pathname, int mode);代码示例如下:#include #include int main(int argc, char *argv[]){ if (access(argv[1], F_OK))原创 2015-08-03 16:49:27 · 676 阅读 · 0 评论 -
getopt函数
getopt函数用于解析命令行参数,Linux中的很多命令都用到了这个函数,函数原型如下:#include int getopt(int argc, char * const argv[], const char *optstring);其中,argc、argv是main函数中传递进来的,而optstring则是用来解析命令行参数个一个字符串,示例如下:#include原创 2015-11-04 16:00:27 · 621 阅读 · 0 评论 -
Linux域名解析得到ip地址
Linux下域名解析得到ip地址代码如下:#include #include #include #include #include int main(int argc, char *argv[]){ struct hostent *p; int i; if (argc < 2) return -1; p = gethostbyname(argv[1]); print原创 2015-12-10 17:23:25 · 6674 阅读 · 0 评论 -
mini2440 lcd操作
内核版本:Linux-2.6.32.2 实验平台:mini2440 + 统宝3.5寸屏(TD035STED4)这里主要是对lcd的帧缓存进行读写操作,并显示出红色,当然也可以显示其他任何东西。首先介绍一下用到的mmap系统调用,mmap系统调用原型如下:#include void *mmap(void *addr, size_t length, int prot, i原创 2015-01-15 10:18:24 · 2003 阅读 · 0 评论 -
uinput模拟鼠标
#include #include #include #include #include #include #include #include #include void mouse_move(int fd, int dx, int dy){ struct input_event ev; memset(&ev, 0, sizeof(struct input_event原创 2014-06-04 00:28:39 · 2613 阅读 · 3 评论 -
tcflush
tcflush函数用于清空输入、输出缓冲区,原型如下:原创 2014-04-08 21:34:44 · 12119 阅读 · 0 评论 -
进程
进程1. system在Linux中,可以使用system函数启动一个新程序,从而创建了一个新进程,函数原型如下:int system(const char *command);system函数有点类似与在shell中执行一个命令,system会等待该程序执行结束,例如:#include #include int main(void){ pri原创 2013-07-12 22:15:37 · 857 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
原文转载自:http://blog.youkuaiyun.com/historyasamirror/article/details/5778378当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link 。写完之后发现很多人都很喜欢,我转载 2013-12-18 16:52:18 · 732 阅读 · 0 评论 -
Unix/Linux进程间通信——管道
Unix/Linux进程间通信——管道管道的特性:1. 半双工通信;2. 只能在父进程和子进程或兄弟进程之间通信;Unix/Linux中使用pipe创建管道,原型如下:#include int pipe(int fildes[2]);成功返回0,失败返回-1,参数fildes为返回的两个文件描述符,fildes[0]用于读,fildes[1]用于写。实例如下:/*原创 2013-12-26 16:19:55 · 1028 阅读 · 0 评论 -
Unix/Linux进程间通信——FIFO
FIFO("First In, First Out"),有时也被称为有名管道,管道只能在父进程和子进程或兄弟进程之前进行通信,而FIFO则无此限制,即可以在任意进程之间进行通信。Unix/Linux中,可以使用mkfifo和mknod来创建FIFO,原型如下:#include #include int mkfifo(const char *pathname, mode_t mode)原创 2013-12-26 17:47:07 · 1143 阅读 · 0 评论 -
Unix/Linux进程间通信——(System V)消息队列
System V消息队列实例:/* http://beej.us/guide/bgipc/examples/kirk.c */#include #include #include #include #include #include #include struct my_msgbuf { long mtype; char mtext[200];};int main(vo原创 2013-12-27 15:58:01 · 834 阅读 · 0 评论 -
Linux下串口编程
参考: POSIX操作系统串口编程指南UNIX环境高级编程在Linux下,标准的串口设备节点名为/dev/ttyS*,如果是USB转串口,则为/dev/ttyUSB*,其中'*'代表0、1...这类数字。一、访问串口1 打开串口打开串口使用open系统调用,例如:#include /* Standard input/output definitions *原创 2014-04-08 10:03:42 · 11414 阅读 · 2 评论 -
Unix/Linux进程间通信——Socket
server.c代码如下:#include #include #include #include #include int main(int argc, char *argv[]){ int sd, client, bytes_read; struct sockaddr_in server; char buf[512]; // 1. Open a socket sd原创 2014-04-20 22:20:43 · 756 阅读 · 0 评论 -
Linux模拟按键输入
在Linux应用层,可以往/dev/input/event...写入数据来模拟按键输入,程序如下:#include #include #include #include #include #include #include /*struct input_event { struct timeval time; __u16 type; __u16 code; __s32原创 2014-04-03 22:04:27 · 13561 阅读 · 1 评论 -
md5、sha1实例
md5、sha1都是一种hash算法,对于任意长度的数据,经过运算之后得到结果长度都是固定的,并且是不可逆的,也就是说在不知道原始数据的情况下破解是非常困难的,通常用于密码的加密存储、数字签名、文件完整性校验等等,代码如下:#include #include #include void bufdump(char *buf, int len){ while (len--) { pri原创 2015-12-30 16:07:41 · 1824 阅读 · 0 评论