![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux环境编程
文章平均质量分 65
cqkxboy168
这个作者很懒,什么都没留下…
展开
-
__attribute__ ((packed)) 的作用
__attribute__ ((packed)) 的作用最近在看我们的代码的时候发现声明类型的时候有 __attribute__ ((packed))的结构体类型声明,不知道是什么意思,查了下知道是如下含义:1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个转载 2013-05-27 16:22:48 · 854 阅读 · 0 评论 -
学习笔记七之网络编程(UDP)
一. Linux下UDP编程框架使用UDP进行程序设计可以分为客户端和服务器端两部分。1.服务器端程序包括:Ø 建立套接字Ø 将套接字地址结构进行绑定Ø 读写数据Ø 关闭套接字2.客户端程序包括:Ø 建立套接字Ø 读写数据Ø 关闭套接字3.服务器端和客户端程序之间的差别服务器端和客原创 2013-06-19 16:19:19 · 860 阅读 · 0 评论 -
学习笔记七之网络编程(TCP)
一.Linux下TCP编程框架TCP网络编程的流程包含服务器和客户端两种模式。服务器模式创建一个服务程序,等待客户端用户的连接,接收到用户的连接请求后,根据用户的请求进行处理;客户端模式则根据目的服务器的地址和端口进行连接,向服务器发送请求并对服务器的响应进行数据处理。1.服务器端程序包括Ø 建立套接字( socket())Ø 套接字与端口的绑定原创 2013-05-07 21:22:09 · 650 阅读 · 0 评论 -
RAW_SOCKET
sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket 1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包2.socket(PF_PACKET, SOCK_RAW, htons(ETH_转载 2013-07-11 11:17:12 · 1075 阅读 · 0 评论 -
linux中头文件的位置
经过试验发现,应用程序编程#include 在编译器(如:arm-linux-4.2.3)目录下usr/include 中查找内核模块编译时#include 在内核代码目录下的 include 中查找原创 2013-07-02 20:39:33 · 924 阅读 · 0 评论 -
inet_ntoa
//获取本机IP地址 charPCname[100]={""}; char *IPaddress=NULL; gethostname(PCname,sizeof(PCname)); printf("Local Hostname is%s.\n",PCname); struct hostent FAR * lpHostEnt=gethostbyname(PCna原创 2013-08-22 18:16:45 · 656 阅读 · 0 评论 -
signal
函数名: signal表头文件#include功 能:设置某一信号的对应动作函数原型:void (*signal(int signum,void(* handler)(int)))(int);或者:typedef void(*sig_t) ( int );sig_t signal(int signum,sig_t handler);参数说明:转载 2013-09-02 11:26:58 · 944 阅读 · 0 评论 -
进程间通信IPC之--共享内存
每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)如下图所示:进程间通信共七种方式:第一类:转载 2013-09-02 11:17:11 · 1086 阅读 · 0 评论 -
scanf(), getchar(), 以及gets()函数注意点
转:scanf(), getchar(), 以及gets()函数注意点 ----------------------------------------------------| 问题描述一:(分析scanf()和getchar()读取字符) |---------------------------------------------------- scanf(转载 2013-06-19 16:01:06 · 1258 阅读 · 0 评论 -
区分C语言中getch、getche、fgetc、getc、getchar、fgets、gets
区分C语言中getch、getche、fgetc、getc、getchar、fgets、gets首先,这两个函数不是C标准库中的函数,int getch(void) //从标准输入读入一个字符,当你用键盘输入的时候,屏幕不显示你所输入的字符。也就是,不带回显。int getche(void) //从标准输入读入一个字符,键盘输入的时候,屏幕显示所输入的字符。带回显。原创 2013-06-19 15:30:56 · 914 阅读 · 0 评论 -
学习笔记二之文件与时间编程
Linux中文件编程可以使用两种方法:Linux系统调用,C语言库函数前者依赖于Linux系统,后者与操作系统是独立的,在任何操作系统下,使用C语言库函数操作文件的方法都是相同的。1.1系统调用-创建 int creat(const char *filename,mode_t mode)filename:要创建的文件名(包含路径,缺省为当前路径)mode:创建模式常见创原创 2013-05-06 22:00:39 · 588 阅读 · 0 评论 -
跨平台时基于数据结构的网络通信
网络通信通常分为基于数据结构的和基于流的。HTTP协议就是后者的一个例子。 有时为了提高程序的处理速度和数据处理的方便,会使用基于数据结构的通信(不需要对流进行解析)。但是,当需要在多平台间进行通信时,基于数据结构的通信,往往要十分注意以下几个方面:[1] 字节序[2] 变量长度[3] 内存对齐 在常见的系统架构中(Linux X86,Windows),非单字节长度转载 2013-05-27 16:33:42 · 1019 阅读 · 0 评论 -
内存对齐的初步讲解--linux和windows平台下内存分配的差异
一.内存对齐的初步讲解内存对齐可以用一句话来概括:“数据项只能存储在地址是数据项大小的整数倍的内存位置上”例如int类型占用4个字节,地址只能在0,4,8等位置上。例1:#include struct xx{ char b; int a; int c; char d;};转载 2013-05-27 17:23:57 · 806 阅读 · 0 评论 -
学习笔记一之编程基础
一、GCC-c:只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件。-g:产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。-O,对程序进行优化编译、链接.例gcc –O optimize.c -o optimizetime ./optimize time显示时间-static:原创 2013-05-06 21:58:26 · 483 阅读 · 0 评论 -
并发 并行 同步 异步 多线程的区别
1. 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥2. 互斥:进程间相互排斥的使用临界资源的现象,就叫互斥。3. 同步:进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程的输出作为后一个进程的输入,当第一个进程没有输出时第二个进程必须等待。具有同步转载 2013-06-04 22:18:37 · 70861 阅读 · 12 评论 -
linux网络编程常用头文件
sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构netinet/in.h:定义数据结构sockaddr_inarpa/inet.h:提供IP地址转换函数netdb.h:提供设置及获取域名的函数sys/ioctl.h:提供对I/O控制的函数sys/poll.h:提供socket等待测试机制的函数其他在网络程序中常见的头文件转载 2013-06-18 16:46:36 · 19108 阅读 · 1 评论 -
select函数总结
select函数总结阻塞方式block,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。使用Select就可以完成非阻塞non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发转载 2013-06-19 14:45:24 · 746 阅读 · 0 评论 -
学习笔记八之线程
前一段时间因为开题的事情一直耽搁了我搞Linux的进度,搞的我之前学的东西都遗忘了,很烦躁的说,现在抽个时间把之前所学的做个小节。文章内容主要总结于《Linux程序设计第3版》。1.Linux进程与线程 Linux进程创建一个新线程时,线程将拥有自己的栈(因为线程有自己的局部变量),但与它的创建者共享全局变量、文件描述符、信号句柄和当前目录状态。Linux通过fork创建子原创 2013-06-19 20:30:46 · 681 阅读 · 0 评论 -
学习笔记三之进程控制
一、进程控制理论基础定义进程是一个具有一定独立功能的程序的一次运行活动。状态进程进程ID(PID):标识进程的唯一数字父进程的ID(PPID)启动进程的用户ID(UID)几个概念进程互斥进程互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止。临界资源原创 2013-05-06 22:20:55 · 622 阅读 · 0 评论 -
滑动窗口机制
(1).窗口机制 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。下面举一个例子(假设转载 2013-12-02 09:53:47 · 651 阅读 · 0 评论