Linux应用编程
Shadow_Walker_yz
这个作者很懒,什么都没留下…
展开
-
fcntl使用
功能描述:根据文件描述词来操作文件的特性。#include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);[描述]fcntl()针对(文件)描述符提供控制。参数fd转载 2015-03-09 18:40:37 · 496 阅读 · 0 评论 -
linux下模块化编程实验
在root/program/c_file下创建add.c, minus.c以及add_minus.c,在root/program/h_file下创建add_minus.h。//***add.c***/int add(int a, int b){ return(a+b);}/***minus.c***/int minus(int a,int b){ re原创 2014-03-13 10:08:39 · 718 阅读 · 0 评论 -
linux静态共享库实验
实验内容:将动态链接库实验中的mylib.c, mylib.h做成静态链接库libmylib.a,在mylib_test.c中使用静态链接库提供的头文件和函数。使用静态链接库生成可执行文件mylib_test并执行。删除静态链接库再执行mylib_test,观察结果。创建mylib.c, mylib.h, mylib_test.c.输入gcc -c mylib.c mylib.h原创 2014-03-13 13:19:31 · 515 阅读 · 0 评论 -
linux多线程之条件变量
一个简单的Linux多线程例子 带你洞悉互斥量 信号量 条件变量编程 希望此文能给初学多线程编程的朋友带来帮助,也希望牛人多多指出错误。 另外感谢以下链接的作者给予,给我的学习带来了很大帮助 http://blog.csdn.net/locape/article/details/6040383 http://www.cnblogs.com转载 2014-04-08 14:31:21 · 469 阅读 · 0 评论 -
信号量阻塞线程实验
/*主进程创建两个线程thread1和thread2,随后等待thread2的结束。而thread2等待thread1给信号量加1从而停止阻塞,thread1又在等待用户输入以往下执行。所以,程序运行的效果是:首先等待用户输入字符,用户输入字符之后thread1输出字符串,并使信号量从0变为1,然后thread1结束。thread2停止阻塞,输出字符串。最后主进程结束。*/原创 2014-03-11 08:42:30 · 1000 阅读 · 0 评论 -
线程实验(2014/2/26)
#include#include#includevoid thread1() //the function of thread 1{ int i; for(i=0;i { printf("This is the 1st thread.\n"); sleep(1); }}void thread2() //the function原创 2014-03-11 08:41:44 · 609 阅读 · 0 评论 -
Linux setitimer 测试代码0
#include#include#include#include#include#includestruct itimerval timer1; //define structure which will be used by function setitimervoid hello();int main(){ timer1.it_value.tv_原创 2014-03-11 08:39:20 · 515 阅读 · 0 评论 -
关于上位机与采集器传输文件时有时不响应用户指令问题的解决
经过将近两个礼拜的编码调试工作,基本实现了采集器与上位机原创 2014-11-04 10:16:35 · 849 阅读 · 0 评论 -
Linux串口编程
串口本身,标准和硬件 †串口是计算机上的串行通讯的物理接口。计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备。虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口。虽然现在在很多个人计算机上,原来用以连接外部设备的串口已经广泛的被USB和Firewire替代;而原来用以连接网络的串口则被以太网替转载 2014-09-19 18:56:46 · 632 阅读 · 0 评论 -
mini2440 comtest.c 详解
友善comtest.c串口编译程序详解 希望对大家有帮助(转) 2012-06-29 00:27:19| 分类: 默# inc认分类|举报|字号 订阅lude # include # include # include # include # include # include # include # includ转载 2014-05-15 16:17:29 · 628 阅读 · 0 评论 -
linux串口应用程序
这是linux串口通信的程序,/*写串口程序*/#include #include #include #include #include #include #include #include #include /*打开串口函数*/int open_port(int fd,int comport)转载 2014-05-16 11:50:57 · 714 阅读 · 0 评论 -
linux下XML编程
程序中用了libxml的库,但是不知道库函数具体如何是用,那么下面的参考手册能解决你的大部分问题,简明易懂,程序表达效果。http://www.xmlsoft.org/tutorial/index.html下面再给出国内的一资料,写得也很不错。使用简介数据类型:xmlChar 替代char,使用UTF-8编码的一字节字符串。如果你的数据使用其它编码,它必须被转换到UTF转载 2014-05-27 11:39:55 · 489 阅读 · 0 评论 -
select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
从别人的博客中转载过来了这一篇文章,经过重新编辑排版之后展现于此,做一个知识点保存与学习。 select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型:int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct t转载 2014-05-15 17:04:27 · 338 阅读 · 0 评论 -
Linux线程调度
对于一个嵌入式多任务、多线程操作系统,所启动的应用进程至少拥有一个线程或多个线程,线程在进程中执行代码。一个进程能够“同时”运行多个线程,“同时”加上引号,因为实际上,在单处理CPU平台上,任何时刻,只有一个线程在执行。操作系统通过任务调度算法快速切换线程来模拟多线程并行,交替地停止一个线程,然后切换到另外一个上运行。支持任务优先级,高优先级线程比低优先级线程更先执行,也就是说低优先线程必须等到高转载 2014-05-14 11:44:05 · 1065 阅读 · 0 评论 -
国嵌消息队列实验代码解析
#include#include原创 2014-05-13 11:29:46 · 458 阅读 · 0 评论 -
读取arm串口时读到了发送的数据
在最近的项目中,需要用上位机向arm发送命令,然后读取命令的返回信息。但是在读取arm串口时,总会读到上位机发送的命令,可是我的arm程序中明明没有通过串口发送接收到的命令。百思不得其解,最终把问题的根源定位到串口的初始化。linux下的串口初始化可以设置的选项众多,很有可能是某项设置出了问题。果然,在c_lflag中,有一项ECHO,其含义为“使能输入字符的回送”。正是因为设置了这一项,导致串口原创 2015-01-05 12:32:52 · 1821 阅读 · 3 评论 -
linux中wait与waitpid的差别
zombie不占用内存也不占用CPU,表面上我们可以不用在乎它们的存在,然而事实上UNIX系统限制了某一时刻能同时存在的进程的最大数目。如果程序不及时清理系统中的zombie,最终会导致进程数过多,当再次需要产生新进程时就会出错。鉴于上边的原因,我们需要在子进程调用exit后在父进成中调用wait或waipid#include#includepid_t wait(int &stat转载 2014-12-04 15:08:10 · 389 阅读 · 0 评论 -
Linux 命令返回值
在Linux中不管是启动桌面程序还是在控制台执行命令都会有一个返回值,可以叫做错误号(perror),在linux中执行命令后可通过命令:echo $?来查看上一条命令的返回值。要查看返回值的具体含义,可通过perror number查看。以下是Linux中返回值对照表"OS error code 1: Operation not permitted""OS error co转载 2014-12-02 11:10:04 · 583 阅读 · 0 评论 -
Linux进程间通信: 消息队列
Linux的消息队列(queue)实质上是一个链表, 它有消息队列标识符(queue ID). msgget创建一个新队列或打开一个存在的队列; msgsnd向队列末端添加一条新消息; msgrcv从队列中取消息, 取消息是不一定遵循先进先出的, 也可以按消息的类型字段取消息.1. 标识符(des)和键(key): 消息队列, 信号量和共享存储段, 都属于内核中的IPC结构, 它转载 2014-11-27 16:20:04 · 370 阅读 · 0 评论 -
用libxml2写xml文件时在节点后追加回车
doc = xmlReadFile(docname, NULL, XML_PARSE_NOBLANKS);//读取xml文件时忽略空格xmlSaveFormatFile (docname, doc, 1);原创 2014-11-19 13:12:07 · 1391 阅读 · 0 评论 -
环境变量(Linux c)
getenv(取得环境变量内容)相关函数 putenv,setenv,unsetenv表头文件 #include定义函数 char * getenv(const char *name);函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。返回值 执行成功转载 2014-12-02 16:01:50 · 346 阅读 · 0 评论 -
Linux下Kill函数用法
[ KILL ]功能描述:用于向任何进程组或进程发送信号。1 #include sys/types.h>2 3 #include signal.h>4 5 int kill(pid_t pid, int sig);6 7 参数: pid:可能选择有以下四种1. pid大于零时,pid是信号欲送往的进程的标识。2转载 2014-12-02 09:34:15 · 418 阅读 · 0 评论 -
libxml的使用(4)--xpath搜索节点树
在libxml的tutorial中介绍了一种用关键字查找节点的方法,这种方法将使用打xpath系列API。由于我才刚刚接触libxml,所以我对xpath的认识也仅仅是在tutorial提供的功能之内了。废话少说,直接进入整体。我们在操作xml文件是经常需要根据特定的条件查找一系列的节点,为了实现这样的功能,我们需要一个xmlXPathContextPtr和一个expression。我们调转载 2014-11-18 13:51:18 · 852 阅读 · 0 评论 -
libxml2对XML文件的创建、解析、查找、修改
一、Libxml2介绍:Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c++、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、Linux、Solaris、MacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题。二、 Libxml2转载 2014-11-17 14:34:49 · 713 阅读 · 0 评论 -
基于Linux的ARM与上位机文件传输
关于上位机以及arm的串口编程,网上的资料很多,不过两者代码同时给出的资料却很少,本菜鸟经过几天时间的煎熬,终于实现了用自己编写的上位机软件传输文件到arm板上。上位机使用的是C#,arm上使用的Linux C,使用的文件传输协议为XModem。关于XModem协议的格式,网上有很多资料,这里就不细说了。原创 2014-09-25 19:59:58 · 2731 阅读 · 0 评论 -
Linux下使用md5函数
代码示例:#include#include#includeint main(int argc, char* argv[]) { char *buf = "helloworld"; char *md; int i; md = MD5(buf,strlen(buf),NULL); printf("%s\n转载 2014-10-17 11:50:49 · 1915 阅读 · 0 评论 -
2014/3/4实验代码
//daemon_init.c //创建一个守护进程#include#include#include#include#include#includevoid init_daemon(void) //initialize daemon{ int pid; int i; if(pid=fork()) //end parent process原创 2014-03-11 08:47:50 · 451 阅读 · 0 评论 -
信号量的实现函数
信号量实现的机制信号量是一种睡眠锁。它是实现同步操作,防止竟态的方式之一。任何进程在对共享数据进行读写操作之前必须获得用来保护共享数据的信号量,否则不能供访问权限,信号量会把这个访问进程放进一个等待队列中(这个等待队列是在信号量初始化过程中被初始化的),然后让其进入睡眠状态。这是处理器重新调度,去执行其他进程的操作。保护共享数据的信号量被释放,被这个信号量放进等待队列的进程会被激活,获得该转载 2014-04-21 11:07:28 · 703 阅读 · 0 评论 -
使用strcat时出现段错误
strcat函数接口如下:原创 2014-05-06 11:56:13 · 3551 阅读 · 0 评论 -
sprintf测试实验
测试代码如下:#include原创 2014-05-06 15:10:20 · 368 阅读 · 0 评论 -
XML文件格式语法及DTD
XML文件和HTML文件一样,实际上是一个文本文件。显然大家立刻就会明白,创建XML文件最普通的工具和HTML一样,就是“记事本”了。除了 “记事本”之外,当然还有一些更加方便的工具,如XML Notepad、XML Pro、CLIP!XML Editor等,这些工具的一大特点是:能够检查你所建立的XML文件是否符合XML规范。不过,现在这些工具都只有英文版的,并且需要付费使用。当然, 你仍然能够转载 2014-05-27 10:02:47 · 509 阅读 · 0 评论 -
linux libxml2的使用
二、Libxml2中的数据类型和函数一个函数库中可能有几百种数据类型及几千个函数,不过记住大师的话,90%的功能都是由30%的内容提供的。对于libxml2(http://blog.csdn.net/shanzhizi),我认为搞懂以下的数据类型和函数就足够了。2.1 内部字符类型xmlCharxmlChar是Libxml2中的字符类型,库中所有字符、字符串都是基于这个数据类型。事转载 2014-05-27 14:33:16 · 486 阅读 · 0 评论 -
2014/2/28编程总结
1.赋值语句不能写在函数体的外面 2.exit(0)表示进程退出,而不是线程3.一般情况下,printf引号中内容的最后要加‘\n’执行程序时才能在屏幕上显示出来 4.遇到问题时可以在Linux终端输入man命令可以查看man手册,里面的内容很详细原创 2014-03-11 08:46:21 · 439 阅读 · 0 评论 -
Linux 控制台聊天程序
//客户端代码 #include#include#include#include#include#include#include#include#include#define MAXBUF 1024int main(int argc, char** argv){ int sockfd,len; struct sockaddr_原创 2014-03-11 08:48:57 · 626 阅读 · 0 评论 -
linux动态共享库实验1
实验内容:将mylib.c和mylib.h做成动态链接库libmylib.so,在mylib_test.c中使用libmylib.so提供的头文件和函数。编译生成mylib_test。执行mylib_test,观察有libmylib.so和没有libmylib.so时的执行情况。在/root/program下创建mylib.c, mylib.h, mylib_test.c。/*原创 2014-03-13 12:31:22 · 424 阅读 · 0 评论 -
linux动态共享库实验2
/*****add.c*****/void add(int* p,int* s){ int i; for(i=0;i { s[i]=p[i]+p[i+1]; }}原创 2014-04-07 11:40:30 · 472 阅读 · 0 评论 -
Linux 线程同步之一:互斥锁
在单线程条件下,由于对数据操作,在同样的时间下,只有一个线程来操作。所以不用担心数据的同步问题。现代的操作系统,大都提供并发机制,虽然有时候是表面的并发。在Linux中,并发用的最多的是基于线程的并发,进程的代价太高了,这样,一个共享的数据,在同一时间内,可能有多个线程在操作。如果没有同步机制,那么想要保证每个线程操作的正确性,是很困难的。1互斥锁概念:互斥锁提供一个可以在同一时间,只让一转载 2014-04-08 12:56:52 · 410 阅读 · 0 评论 -
Linux setitimer函数测试代码2
/*首先提示用户输入上限值,然后thread1和thread2循环检测定时器定时时间,直至60秒后,thread3醒来,输出定时器超过设定上限值的次数,并结束程序。*/#include#include#include#include#include#include#include#includeint upper_limit;int time原创 2014-03-11 08:45:28 · 390 阅读 · 0 评论 -
setitimer函数测试代码1
/*thread1先获取系统时间,然后阻塞,紧接着thread2调用setitimer开启定时器,定时10ms,时间到后收到信号SIGALRM,转到信号处理函数change_semaphore改变信号量,信号量变为1以后thread1停止阻塞,输出两次时间差*/#include#include#include#include#include#include#原创 2014-03-11 08:44:34 · 514 阅读 · 0 评论 -
linux数学函数库
在linux下进行开发,如果要用到复杂的数学计算,则可以使用gsl原创 2014-08-06 09:46:41 · 672 阅读 · 0 评论