
linux
hongdongyu
这个作者很懒,什么都没留下…
展开
-
嵌入式Linux网络编程
一、TCP/IP协议1、TCP/IP参考模型TCP/IP协议模型遵循简单明确的设计思路,包括以下四层协议:网络接口层:负责将二进制流转换为数据帧,并进行数据帧的发送和接受。数据帧是独立的网络信息传输单元。网络层:负责将数据帧封装成IP数据包,并运行必要的路由算法。传输层:负责端对端之间的通信会话连接与建立。传输协议的选择根据数据传输方式而定。应用层:负责应用程序的网络访问,通过端口原创 2012-09-29 15:20:14 · 2058 阅读 · 0 评论 -
初学多线程编程
一、线程概述进程是系统中程序执行和资源分配的基本单位,之所以有了进程还要引入线程有几个方面原因:1、和进程相比,线程是一种非常“节俭”的多任务操作方式。运行于一个进程中的多个线程,它们共用地址空间,而且线程彼此切换所需的时间远远小于进程间切换所需的时间。2、线程间方便的通信机制。对于进程来说,它们具有独立的数据空间,进行数据传递只能通过进程间通信方式进行。线程由于在同一进程下的线程之间原创 2012-09-19 16:54:59 · 377 阅读 · 0 评论 -
Linux下进程间通信(小结)下
四、共享内存共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。由于多个进程共享一段内存,因此也需要依靠某种同步机制。共享内存的实现分为两个步骤,第一步是创建共享内存,使用shmget(),也就是从内存中获得一段共享内存区域,第二步映射共享内存,也就是把这段内存映射到具体的原创 2012-08-28 14:11:42 · 400 阅读 · 0 评论 -
Linux下进程间通信(小结)上
之所以进程间需要通信,包括进行数据传输、资源共享、通知事件和进程控制等等。现在Linux使用的进程间通信方式包括:管道和有名管道信号消息队列共享内存信号量套接字一、管道1、这里主要指无名管道,具有如下特点:#、只能用于具有亲缘关系的进程之间通信。#、是一个半双工通信模式,具有固定的读写端,先进先出。#、可以看成是一种特殊的文件,可以使用普通的read()等函数,但是原创 2012-08-22 11:16:05 · 1202 阅读 · 0 评论 -
进程控制
1、进程是一个程序的一次执行过程,同时也是资源分配的最小单元,根据它的生命周期可分为三种状态:执行态、就绪态和等待态。Linux中的进程包含三个段:数据段、代码段和堆栈段。2、Linux进程控制编程@1、fork函数创建,在unistd.h库中定义,函数原型为pid_t fork(void)。fork函数调用一次却返回两次;在父进程中返回子进程的ID,在子进程中返回0,出错返回负值。For原创 2012-08-17 14:45:47 · 295 阅读 · 0 评论 -
linux中read函数需要注意的细节
在对read的使用过程中,发现其实对返回值的处理比较重要。read函数原型:ssize_t read(int fd,void *buf,size_t count)1、每次执行read函数前,指定好起始位置(否则经常出错),并且对buffer进行初始化2、对于一个数组,总是要自动分配一个'\0'作为结束符,实际有效的buffer长度只有buffer_size-1,有可能出现'\0'没有地原创 2012-08-16 13:57:45 · 1805 阅读 · 1 评论 -
argc与argv
main函数的完全格式是这样的: int main ( int argc, char *argv[ ] 或者char **argv, char *envp[ ] ) 下面详细介绍: argc是执行程序时的命令行参数个数。需要注意的是,程序本身的文件也算一个。比如你写了个程序叫test,若用下面的命令行启动: ./test /p /w 则argc的值为3。 arg原创 2012-08-15 15:54:22 · 557 阅读 · 0 评论 -
Linux下getch()使用的问题
getch不是标C的函数,建议使用getchar使用getch需注意以下问题:1、用gcc编译时候需要用-lcurses加进这个库,如:gcc test.c -o test -lcurses2、使用getch之前之后应分别加上initscr()初始化,结束加上endwin(),如下:initscr(); // initscr确定终端类型,并初始化数据结构,它调用refresh清屏原创 2012-08-13 11:40:39 · 1828 阅读 · 0 评论 -
使用iconv转换出现“非法输入序列”的问题
如题:我只选择最关键的语句:iconv -f gb18030 -t utf-8 $1 > $2这样会出现“未知xxx处的非法输入序列”,我想可能是有些汉字字符识别不出来于是,我把它改为iconv -c -f gb18030 -t utf-8 $1 > $2,多加了一个-c,忽略无效的字符发现转化过来基本正确(起码汉字的翻译全对了,也没有丢失数据),但是有个小地方出错了,如下图原创 2012-08-06 16:56:09 · 6110 阅读 · 0 评论