![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux编程学习
文章平均质量分 70
qq_26460507
主要研究方向为图像处理和无线通信。
展开
-
逻辑地址、物理地址、虚拟地址、地址空间、线性地址等概念通俗易懂
逻辑地址:很简单,就是你源程序里使用的地址,或者源代码经过编译以后编译器将一些标号,变量转换成的地址,或者相对于当前段的偏移地址。线性地址:这个地址很重要,也很不容易理解。分段机制下CPU寻址是二维的地址即,段地址:偏移地址,CPU不可能认识二维地址,因此需要转化成一维地址即,段地址*16+偏移地址,这样得到的地址便是线性地址(在未开启分页机制的情况下也是物理地址)。这样有什么意义呢?或者转载 2017-10-06 14:47:30 · 4518 阅读 · 0 评论 -
linux两个不常用的两个有用的命令ulimit和xargs
1、ulimit指令概述系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制。本文将在后面的章节中详细说明 ulimit 的功转载 2017-09-01 11:03:11 · 391 阅读 · 0 评论 -
牛客网错题集锦5
1、如果您想列出当前目录以及子目录下所有扩展名为“.txt”的文件,那么您可以使用的命令是()答案:命令find -name "*.txt",是获取当前目录的.txt文件2、设定linux系统默认为字符模式,需要修改的配置文件是( )答案:/etc/inittab3、apache目录访问控制的参数有( )AuthName:验证窗口的名称AuthType:原创 2017-08-31 15:41:15 · 1074 阅读 · 0 评论 -
在hi3531a开发板上搭建qt环境遇到的屏幕呈绿色的解决办法
在嵌入式平台,我们使用的QT会是以QWS方式运行,即会先运行QWSServer,再运行实际的窗体,在该情况下,默认QWS背景会是绿色的,而在嵌入 式上,很多方案都会将video和graphic层分开,两层的层叠也是可调的,当需要在video上面做一些控制图标等,此时就需要将gfx调到vid 之上,此时就需要将运行于gfx的qt程序设置背景透明,共需要设置两处:一处是QWS,一处是窗体。对此,我们使原创 2017-09-09 22:41:20 · 1451 阅读 · 0 评论 -
linux高手成长笔记
建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/Linux的编程,《Advanced Programing in Unix Envirement》绝对经典的教材,转载 2017-08-30 22:34:06 · 306 阅读 · 0 评论 -
牛客网错题集锦4
1、64位Linux系统里,下面几个sizeof的运行结果是()123456intintValue = 1024;charstr[] = “Tencent”;constchar* ch = str;sizeof(intValue) = __a__;原创 2017-08-30 15:36:08 · 547 阅读 · 0 评论 -
linux中的守护进程daemon
守护进程与setid()守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进 程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。 比如,作业规划进程crond,打印进程lpd等。守护进程的编转载 2017-08-30 15:49:16 · 239 阅读 · 0 评论 -
linux的内核之内存屏障
内存屏障(Memory Barriers)一方面,CPU由于采用指令流水线和超流水线技术,可能导致CPU虽然顺序取指令、但有可能会出现“乱序”执行的情况,当然,对于” a++;b = f(a);c = f”等存在依赖关系的指令,CPU则会在“b= f(a)”执行阶段之前被阻塞;另一方面,编译器也有可能将依赖关系很近“人为地”拉开距离以防止阻塞情况的发生,从而导致编译器乱序,如“a++ ;c转载 2017-08-30 15:43:15 · 270 阅读 · 0 评论 -
linux常考命令之grep
简介grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展转载 2017-08-30 11:31:41 · 199 阅读 · 0 评论 -
什么是实时操作系统和非实时操作系统?
嵌入式实时系统中采用的操作系统我们称为嵌入式实时操作系统,它既是嵌入式操作系统,又是实时操作系统。作为一种嵌入式操作系统,它具有嵌入式软件共有的 可裁剪、低资源占用、低功耗等特点;而作为一种实时操作系统(本文对实时操作系统特性的讨论仅限于强实时操作系统,下面提到的实时操作系统也均指强实时操 作系统),它与通用操作系统(如Windows、Unix、Linux等)相比有很大的差别,下面我们将通过比较这转载 2017-09-27 22:40:55 · 2322 阅读 · 0 评论 -
深信服2018年秋招测试工程师面试
1、介绍一下,extern在c语言中的用处。2、介绍strcpy和memcpy的区别strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char原创 2017-09-28 09:46:25 · 1296 阅读 · 0 评论 -
linux中常用指令tcpdump
tcpdump是linux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是ubuntu 12.04。tcpdump的命令格式tcpdump的参数众多,通过man tcpdump可以查看tcpdump的详细说明,这边只列一些笔者自己常用的参数:tcpdump [-i 网卡] -nnAX '表达式'各参数说明如下:-i:interface 监听的转载 2017-09-03 10:04:21 · 391 阅读 · 0 评论 -
linux内核之设备I/O块
为了优化寻址操作,内核既不会简单的按请求接收次序,也不会立即将请求提交给磁盘。相反,内核在提交前,先执行名为合并与排序的预操作,这种预操作可以极大的提高系统的整体性能。在内核中负责提交I/O请求的子系统统称为I/O调度程序。I/O调度程序将磁盘I/O资源分配给系统中挂起的块I/O请求。具体的说,这种资源分配是通过将请求队列中挂起的请求合并和排序来完成。这里区分I/O调度程序和进程调度程序。进程原创 2017-10-10 19:57:36 · 689 阅读 · 0 评论 -
应聘恩智浦时考察正则表达式
正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。模式描述在搜索文本时要匹配的一个或多个字符串。1.正则表达式基本语法两个特殊的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束。例子如下:"^The":表示所有以"The"开始的字符串("There","The cat"等);"of despai原创 2017-10-10 18:14:03 · 444 阅读 · 0 评论 -
凌云光科技笔试题
1、死锁产生的原因及解决方案产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。原创 2017-10-10 17:30:17 · 2645 阅读 · 0 评论 -
socket网络编程一些知识点
一、socket用于不同计算机间的进程间通信TCP/IP协议族中网络层的IP地址可以唯一标识网络中的主机,而传输层的端口可以唯一标识主机中的应用程序。Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不转载 2017-10-10 16:34:07 · 463 阅读 · 0 评论 -
展讯校招2018年秋招笔试题
kmalloc、vmalloc、malloc的区别简单的说:kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc不保证任何东西(这点是自己猜测的,不一定正确)kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较大内存只有原创 2017-09-20 22:35:22 · 2696 阅读 · 1 评论 -
应聘嵌入式工程师笔试常考之宏定义的优缺点
1、宏定义的优点:(1) 方便程序的修改 使用简单宏定义可用宏代替一个在程序中经常使用的常量,这样在将该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可,而且当常量比较长时,我们可以用较短的有意义的标识符来写程序,这样更方便一些。(2) 提高程序的运行效率 使用带参数的宏定义可完成函数调用的功能,又能减少系统开销,提高运行效率。正如C语言中所讲,原创 2017-09-20 10:43:18 · 522 阅读 · 0 评论 -
牛客错题集锦5
1、在Redhat公司发布的Linux版本中,若要使得用户登录验证,需要修改以下__/etc/shadow _ ___脚本。ect/passwd用来保存用户的基本信息,而/etc/shadow用来保存所有用户的密码,在/etc/shadow中第二字段为用户的加密密码,如果密码是"!!"或" * "则代表没有密码不能登录,需要用户登录验证。2、下面有关linux查看系统负载的命令,说原创 2017-09-03 10:02:24 · 735 阅读 · 0 评论 -
常考linux指令之sed
简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。转载 2017-08-30 11:28:58 · 196 阅读 · 0 评论 -
牛客网错题集锦3
1、运行在多核处理器上的Linux环境中,若临界区非常短,且不允许线程上下文切换的情况下,使用下列哪种机制满足上述需求并且性能最好?(SpinLock)1)SpinLock 2)Mutex 3)Semaphore 4)Condition variable 解析:spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽原创 2017-08-29 14:46:48 · 1178 阅读 · 0 评论 -
高质量嵌入式Linux C编程学习摘要
1、多线程方面1)pthread_create()创建的线程默认情况下是非分离状态的线程,如果修改线程的状态属性,需要使用pthread_attr_getdatachstate()和pthread_attr_setdatachstate()来修改线程的属性。PTHRED_CREATE_DETACHED为分离状态,PTHREAD_CREATE_JOHNABLE是非分离状态。2)pthread原创 2017-08-26 12:00:06 · 854 阅读 · 0 评论 -
好未来2017秋招笔试编程题
1、 [编程题]字符串中找出连续最长的数字串读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。输入例子:abcd12345ed125ss123456789输出例子:123456789#if原创 2017-08-25 17:39:21 · 557 阅读 · 0 评论 -
C语言实现常见的字符串处理函数
#if 0 ///strcpy字符串赋值函数实现///法1/*char my_strcpy(char *dest, const char *src) { assert(dest!=NULL && src != NULL); while((*dest++ = *src++) != '\0'); }*/ ///法2 void my_strcpy(char* Dest, c原创 2017-08-25 17:35:40 · 444 阅读 · 0 评论 -
常用的字符串处理库函数的C语言实现
#include #include #include #include #include #include #include #include ///Debug mode#if 0 ///strcpy字符串赋值函数实现///法1/*char my_strcpy(char *dest, const char *src) { assert(dest!=NULL &原创 2017-08-13 18:35:12 · 497 阅读 · 0 评论 -
高质量C/C++编程
目 录前 言... 6第1章 文件结构... 111.1 版权和版本的声明... 111.2 头文件的结构... 121.3 定义文件的结构... 131.4 头文件的作用... 131.5 目录结构... 14第2章 程序的版式... 152.1 空行... 152.2 代码行... 162.3 代码行内的空转载 2017-08-13 20:32:17 · 702 阅读 · 0 评论 -
linux进程间通信消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞转载 2017-08-13 20:26:59 · 185 阅读 · 0 评论 -
C语言编程的优化问题
一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。转载 2017-08-13 15:23:17 · 719 阅读 · 0 评论 -
海康威视2015年研发笔试题
一、引用和指针的区别?指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法。1.指针和引用的定义和性质区别:(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:int a=1;int *p=&a;原创 2017-08-17 12:59:01 · 2463 阅读 · 1 评论 -
牛客练习错题总结
1、linux 创建文件的命令有()touch,cat,vi/vim,>touch命令 创建空白文件或修改文件时间cat主要有三大功能:1.一次显示整个文件。2.从键盘创建一个文件。 只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件vi/vim可用来创建文件编辑文件并保存> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其原创 2017-08-26 11:29:15 · 654 阅读 · 0 评论 -
牛客网练习题错题集锦2
1、若一台计算机的内存为128MB,则交换分区的大小通常是(256M)解析:在内存小于2G的情况下,交换分区应为内存的2倍,超过2G的话,交换分区为物理内存加上2G2、Linux crontab中* * * * * /usr/local/run.sh这句话5个*号分别代表什么?解析:crontab基本格式 : * * * * * command 分 时 日原创 2017-08-28 15:48:06 · 726 阅读 · 0 评论 -
牛客网错题集锦
1、Linux中,一个端口能够接受tcp链接数量的理论上限是?易错误的选择(65535)解析:标识一个TCP连接的是,客户端和服务器的IP地址加端口号,尽管服务器IP地址和端口号一样,但是客户端IP地址是不一样的,而客户端端口号只有本地意义,所以理论上服务器一个端口号能接受的TCP连接是无上限的。2、UNIX系统中进程由三部分组成:进程控制块,正文段和数据段。这意味着一个程序的正文与数原创 2017-09-05 10:05:01 · 643 阅读 · 0 评论 -
string类的构造以及static和const的详细作用
static关键字至少有下列n个作用1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; (3)在模块内的 static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;原创 2017-09-15 18:49:59 · 1088 阅读 · 0 评论 -
linux中netstat命令
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行netstat后,其输出结果为Active Internet connections (w/o servers)Proto Recv-Q S转载 2017-08-29 23:33:37 · 364 阅读 · 0 评论 -
linux中awk命令详解
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfr转载 2017-08-29 23:28:50 · 186 阅读 · 0 评论 -
嵌入式多任务OS中Vxworks和linux的一些区别
自己目前开发的嵌入式开发所用的操作系统是VxWorks,以前读大学的时候用的最多的是linux操作系统,但是,对于这两种操作系统之间到底有什么区别,还真没有真正去细心的总结过,被别人问起时,难免有些尴尬的感觉,毕竟自己是学嵌入式开发的,竟然对嵌入式开发系统了解的不深入,今天专门抽时间好好的总结下,二者到底有什么区别? VxWor转载 2017-09-15 08:44:14 · 1558 阅读 · 0 评论 -
C++中不同指针指向同一个字符串,然而地址相同
int main(int argc, char* argv[]){ char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char * str5 = "abc"; const char * str转载 2017-09-14 22:23:44 · 1863 阅读 · 0 评论 -
嵌入式编程常考的无符号数和有符号数的运算问题
1、有符号数与无符号数之间运算问题 以下实验均在virual c++6中运行通过 这个问题测试是否懂得C语言中的整数自动转换原则,有些开发者懂得极少这些东西。当表达式中存在有符号类型和无符号类型时 所有的操作数都自动转换为无符号类型。因此,从这个意义上讲,无符号数的运算优先级要高于有符号数,这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。 首先进行一个实验,分别定转载 2017-09-14 21:17:57 · 1716 阅读 · 0 评论 -
linux中的自旋锁spinlock和信号量用于线程同步的区别
内核同步措施为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux从单处理器到对称多处理器的过度;伴随着从非抢占内核到抢占内转载 2017-08-29 15:25:18 · 353 阅读 · 0 评论 -
linux中进程、线程、调度的一些理解
1、信号来自进程或内核2、线程共享进程的代码空间和数据空间(全局变量或静态变量),文件描述符,信号,以及malloc分配的内存,每个线程拥有独立的栈空间和程序计数器,在创建线程时,调用pthread_create函数的线程和新建线程的执行顺序随机3、在linux中,使用轻量级进程来模拟线程,线程操作的相关函数通过第三方线程库 (Linuxthreads 或 Native POSIX转载 2017-08-29 15:23:37 · 2932 阅读 · 0 评论