【Linux程设】
stan_linux
爱linux,爱arm,爱电子,爱创新
展开
-
Linux下Socket编程
么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传输转载 2014-01-04 00:02:45 · 611 阅读 · 0 评论 -
详细介绍Linux shell脚本基础学习(三)
Linux shell脚本基础学习第三讲,前面我们介绍shell命令和流程控制时,由于篇幅没能讲流程控制,今天流程控制我们这里也只是介绍前面三各部分 if case 和 select。后面还有三个部分内容只能在Linux shell脚本基础学习第四讲中介绍了。1.1.5 Shell命令和流程控制(2)3) 流程控制1.if"if" 表达式 如果条件为真则执行the转载 2013-12-27 19:11:57 · 768 阅读 · 1 评论 -
使用vfork函数时出现“总线错误”
代码:#include #include #include int main(void){ pid_t pid; int count=0; pid=vfork(); count++; printf("count=%d\n",count); return 0; //exit(0);}运行结果count=1cou转载 2014-01-06 11:57:51 · 770 阅读 · 0 评论 -
局部变量和全局变量重名
当局部变量和全局变量重名的时候,局部会屏蔽全局变量,如果需要使用全局变量,需要使用“::"。局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 当全局变量与局部变量重名时,局部变量对全局变量的屏蔽就是说原创 2014-01-06 20:05:51 · 2297 阅读 · 0 评论 -
共享内存
共享内存 (shared memory)是 Unix下的多进程之间的通信方法 ,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。如何创建共享内存是存在于内核级别的一种资源,在shell中可以使用ipcs命令来查看当前系统IPC中的状态,在文件系统/proc目录下有对其描述的相应文件。函数shmget可以创建或打开一块共享内存区。函数原型如下原创 2014-01-07 14:03:02 · 640 阅读 · 0 评论 -
strcpy与strncpy的区别
strcpy:字串复制 原型:char *strcpy(char *dest, char *src); 功能:把src所指由'\0'结束的字符串复制到dest所指的数组中。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 注意:当src串长度>dest串长度时,程序仍会将整个s转载 2014-01-07 15:44:18 · 652 阅读 · 0 评论 -
Linux文件权限
一、Linux文件权限 每个Linux文件具有四种访问权限:可读(r)、可写(w)、可执行(x)和无权限(-)。 利用ls -l命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为 准。第一个字段由10个字符组成,如下: -rwxr-xr-x 第一位表示文件类型,-表示文件,d表示目录 2-4位表示文件所有者的权限,u转载 2014-01-07 14:16:12 · 589 阅读 · 0 评论 -
C语言中memset函数详解
功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 用 法: void *memset(void *s, char ch, unsigned n); 程序例: #include #include #include int m转载 2014-01-03 14:54:53 · 1765 阅读 · 1 评论 -
混合编程
在嵌入式系统开发中,目前使用的主要编程语言是C和汇编,C++已经有相应的编译器,但是现在使用还是比较少的。在稍大规模的嵌入式软件中,例如含有OS,大部分的代码都是用C编写的,主要是因为C语言的结构比较好,便于人的理解,而且有大量的支持库。尽管如此,很多地方还是要用到汇编语言,例如开机时硬件系统的初始化,包括CPU状态的设定,中断的使能,主频的设定,以及RAM的控制参数及初始化,一些中断处理方面也可原创 2014-01-07 21:07:58 · 681 阅读 · 0 评论 -
*p++和*++p的区别
接下来,通过示例彻底理解自增运算符的两种用法(自减的用法与之类似,只不过是加1变成了减1)。 1、++i和i++的区别 如清单1(注意代码中的注释): [cpp] view plaincopy#include int main(void) { int a, b, i = 7;转载 2014-01-12 11:36:53 · 1113 阅读 · 0 评论 -
const 参数
出现在函数参数中的const 表示在函数体中不能对这个参数做修改。比如上面的例子中strcmp() 函数用来比较两个字符串的大小,在函数体中不应该改变两个参数的值,所以将它定义为是const 的。const 通常用来限制函数的指针参数,引用和数组参数,而一般形式的参数因为形参和实参本来就不在同一内存空间,所以对形参的修改不会影响实参,因此也没有必要限制函数体不能对参数进行修改。下面是一些使原创 2013-12-31 18:36:29 · 990 阅读 · 1 评论 -
void *(*func) (void *)是啥意思?
有点怪怪的,因为以前搞c语言老是停留在打印个”hello world“那个初级阶段,现在用它搞IT项目,还真一时半会适应不过来,一看到这东东觉得忒别扭,怪怪的哈(小沈阳的口气,(*^__^*) )。void *(*func) (void *)是啥玩意儿呢?其实就是一个参数为void指针,返回值为void指针的函数指针了,仅此而已。fighting!转载 2014-01-03 21:06:18 · 3091 阅读 · 1 评论 -
有名管道
管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。 FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间)。转载 2014-01-03 10:17:10 · 596 阅读 · 0 评论 -
system库函数调用
system函数用于在程序内部启动一个新进程。 函数原型如下 #include int system(const char * string); system函数的作用是,运行以字符串参数的形式传递给他的命令并且等待该命令的完成。命令的执行情况如在shell中执行如下命令: sh -c string原创 2014-01-06 12:50:00 · 1779 阅读 · 0 评论 -
linux消息队列
对消息队列的操作无非有下面三种类型:1、 打开或创建消息队列消息队列的内核持续性要求每个消息队列都在系统范围内对应唯一的键值,所以,要获得一个消息队列的描述字,只需提供该消息队列的键值即可;注:消息队列描述字是由在系统范围内唯一的键值生成的,而键值可以看作对应系统内的一条路经。2、 读写操作消息读写操作非常简单,对开发人员来说,每个消息都类似如下的数据结构:转载 2014-01-03 16:51:14 · 669 阅读 · 0 评论 -
管道通信
什么是管道? 管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。管道的分类 管道包括无名管道和命名管道两种,前者用于父进程和子进程间的通信,后者可用于运行于同一系统中的任意两个进程间的通信。无名管道的创建 无名管转载 2014-01-03 11:36:25 · 631 阅读 · 0 评论 -
fputc、putc、putchar
fputc函数把一个字符写到一个输出文件流中。它返回写入的值,如果失败,则返回EOF。int fputc(int c,FILE *stream);int putc( int c,FILE *stream);int putchar(int c);类似于fgetc和getc之间的关系,putc和fputc作用也相同,但它可能被实现为一个宏,putchar函数相当于putc(c,转载 2014-01-02 13:23:38 · 2045 阅读 · 0 评论 -
详细介绍Linux shell脚本基础学习(一)
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头、注释、变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提。1. Linux 脚本编写基础◆1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的转载 2013-12-27 13:06:48 · 625 阅读 · 0 评论 -
系统调用
一、进程控制:fork创建一个新进程clone按指定条件创建子进程execve运行可执行文件exit中止进程_exit立即中止当前进程getdtablesize进程所能打开的最大文件数getpgid获取指定进程组标识号setpgid设置指定进程组标志号ge原创 2013-12-31 09:46:14 · 531 阅读 · 0 评论 -
对accept函数第二个参数的理解
int accept(int sockfd, struct sockaddr *clientaddr, socklen_t *addrlen);第二个参数clientaddr是一个传出参数,accept()返回时传出客户端的地址和端口号。获取流程:服务器调用accept()阻塞等待,处于监听端口状态,客户端调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN—ACK段原创 2014-01-04 00:28:50 · 1673 阅读 · 0 评论 -
linux下系统调用
当你不知道一个Linux的系统调用函数时,可以试试man命令后加这个函数名,可以查到该函数所声明的头文件,比如若是不知道fread()函数的使用方法时,可以在shell下输入:man fread命令,会查到该函数的详细信息。若是你要查的某些函数和linux 下的shell命令重名了,比如write()函数和write命令就是重名的,此时可以在shell下输入:man 2 write,此时就可以看到原创 2013-12-31 13:46:58 · 620 阅读 · 0 评论 -
详细介绍Linux shell脚本基础学习(二)
Linux shell脚本基础课程前面一讲介绍的都是语法基础的开头、注释、变量和 环境变量,这里将介绍shell命令和控制流程的第一部分,在shell脚本中可以使用三类命令,而控制流程就放在下一讲吧。1.1.5 Shell命令和流程控制在shell脚本中可以使用三类命令:1)Unix 命令:虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的转载 2013-12-27 13:24:18 · 726 阅读 · 0 评论 -
goto语句和标号
分支、循环都讲完了,现在只剩下最后一种影响控制流程的语句了,就是goto语句,实现无条件跳转。我们知道break只能跳出最内层的循环,如果在一个嵌套循环中遇到某个错误条件需要立即跳出最外层循环做出错处理,就可以用goto语句,例如:for (...) for (...) { ... if (出现错误条件) goto error; }error: 出错处理;这里的err转载 2014-01-14 16:20:48 · 3380 阅读 · 0 评论