---恢复内容开始--- c库函数文件操作独立于具体的系统平台,可移植性较好. 库函数-创建和打开 FILE*fopen(const char*filename,const char*mode) mode:打开模式 常见的打开模式: r,rb:只读方式打开 w,wb: 只写方式打开,如果文件不存在,则创建该文件 a,ab:追加方式打开,如果文件不存在,则创建该文件 r+,r+b,rb+:读写方式打开 w+,w+b,wh+:读写方式打开,如果文件不存在,则创建该文件 a,a+b,ab+:读和追加方…
在看韦东山视频linux驱动方面有一些吃力,究其原因,虽然接触过linux应用程序编程,但是没有深入去理解,相关函数用法不清楚,正好看到国嵌视频对这一方面讲的比较透彻, 所以把学习过程记录下来,也作为linux应用程序开发的一个系列吧! 文件编程有两种方式,一是系统调用方式,二是库函数调用. 前者依赖特定的平台,后者不依赖平台. 系统调用:创建 int creat(const char *filename,mode_t mode); filename:要创建的文件名 mode:创建模式 S_IR…
前段时间看APUE,确实比较详细,不过过于详细了,当成工具书倒是比较合适,还是读一读这种培训机构的书籍,进度会比较快,遇到问题时再回去翻翻APUE,这样的效率可能更高一些. <嵌入式linux应用程序开发标准教程>的前几章没必要看了,都是写浅显的知识点,从第六章文件IO编程开始记录笔记.后期再根据APUE的内容进行补充和扩展. 一.linux系统调用及API 1. 系统调用 linux分为内核空间和用户空间,用户空间无法直接访问内核空间.内核通过系统调用为用户提供服务,很精简,大约250个左右…
嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目录---chdir(): 4.重新设置文件权限掩码---umask(): 5.关闭所有的文件描述符---close(fdx): 6.设置daemon程序的任务---此例主要在while循环中体现. 下面是一个例子程序: /* daemon * how to create a daemon proce…
Linux程序开发 linux程序总体上来说是分两部分的: 1. 底层驱动程序开发: 2.应用层应用程序开发: 驱动程序 一般情况下驱动是跟内核与硬件有关系的,编程语言是C语言,需要懂一些硬件的知识,至少需要看懂硬件原理图和芯片手册.硬件原理图告诉我们底层接口工作的逻辑,以及芯片工作的条件(电压.电流.时钟脉冲等):芯片手册是告诉我们如何去配置使用芯片,比较关键的是看懂寄存器配置,对于芯片的配置,就是去配置其各个寄存器,比如去配置一个AD音视频采集的芯片:就需要去配置音频采样率.采样点数.采样位…
进程是系统资源的最小单元,很重要. 7.1 linux进程的基本概念 定义:一个程序的一次执行过程,同时也是资源分配的最小单元.程序是静态的,而进程是动态的. 进程控制块:linux系统用进程控制块描述进程,task_struct,在 include/linux/sched.h PID,进程唯一标识:PPID,父进程的PID #include <unistd.h> /* Get the process ID of the calling process. */ extern __pid_t g…
线程是轻量级进程,创建线程的开销要比进程小得多,在大型程序中应用广泛. 9.1 线程概述 进程包含自己的代码.数据.堆栈.资源等等,创建和切换的开销比较大: 线程是轻量级的进程,调度的最小单元,同一个进程内的线程可以共享资源: 线程的上下文开销比进程小得多: 线程有自己的堆栈,但是用户空间共享,例如一个线程修改全局变量,会影响到同一个进程内的另一个线程: linux里其实线程就是轻量级的进程,都用PCB表示,只不过新建线程时,共享同一个进程内的资源.线程应该是单独调度 9.2 线程编程 线程一般…
1.1     代码提示功能 在vs中开发中,Visual Assist是一个很优秀的插件,我们仍然能够使用它进行代码的分析,但它仅仅能支持vcxprojproject,因而我们选择对vcxproj的project进行扩展,这样VisualAssist就能够正常使用了. 此外,VS的智能感知不支持GCC的一些扩展,在做代码分析的时候可能出错.我们採用强制包括头文件的方式解决一部分问题: 注意,这个文件的目的是让VS可以进行代码的分析,而不是让VS具有编译这些代码的能力!! ! 这个头文件类似于这…
, 8.1 概述 linux里使用较多的进程间通信方式: 管道,pipe和fifo,管道pipe没有实体文件,只能用于具有亲缘关系的进程间通信:有名管道 named pipe,也叫fifo,还允许无亲缘关系进程间通信: 信号,signal,软件模拟中断的机制,很多信号是系统处理的: 消息队列,messge queue,消息的链表. 共享内存,shared memory,容量大,用的比较多,需要额外的同步机制,如互斥锁和信号量 信号量,semaphore,主要用于进程间的同步和互斥 套接字,soc…
在嵌入式开发流程.有些参数基本上不改变,比如编译主机IP,username,password等参数.我们用VS提供的属性管理器来保存这些參数. 打开属性管理器: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlnaHRzX2pveQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> 能够看到VS会依据不同的平…