Linux编程
文章平均质量分 76
zhuwenfeng215
这个作者很懒,什么都没留下…
展开
-
系统调用方式文件编程
1.核心理论文件描述符: 在linux系统中,所有打开的文件对应一个数字,这个数字由系统来分配,我们称之为:文件描述符。2.函数学习打开文件函数名: open函数原型:int open(const char *pathname, int flags); int open(const char* pathname,原创 2015-04-18 14:54:20 · 481 阅读 · 0 评论 -
并发服务器的设计
/* tcp_server.c */#include #include #include #include #define portnum 3333int main(){ int sockfd,newfd; struct sockaddr_in server_addr; struct sockaddr_in client_addr; char buffer[128];原创 2015-05-08 22:45:44 · 382 阅读 · 0 评论 -
信号量同步编程
1.核心概念-进程同步一组并发进程进行互相合作,互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步。2.生产者消费者问题/* producter.c */#include #include #include #include #include #include void main(){ int fd; key_t key; int semid;原创 2015-04-27 16:29:52 · 348 阅读 · 0 评论 -
守护进程设计
1.什么是守护进程守护进程,也就是通常说的Daemon精灵进程,是linux中的一种服务进程。它的特点是:*不占用控制终端(后台运行)*独立于控制终端×周期性运行后台运行守护进程需要独立于任何一个控制终端。实现方法调用是通过创建子进程来充当守护进程,而父进程退出,这样子进程就可以在后台运行。pid=fork();if(pid>0) exit原创 2015-05-09 09:19:20 · 434 阅读 · 0 评论 -
shell脚本高级编程
1.什么是脚本脚本是一个包含一系列命令序列的文本文件。当运行这个脚本时,文件中包含的命令序列将得到自动执行。2.脚本编程技术2.1基本结构#!/bin/bash 指明使用bash解析器2.2变量shell脚本允许用户设置和使用自己的变量,变量可以是数字或者字符串,用户无需指定其类型,也无需在使用前定义。#!/bin/basha="hello world"b=原创 2015-05-09 11:10:39 · 838 阅读 · 0 评论 -
消息队列通讯编程
1.基本概念消息队列就是一个消息的链表。而一条消息则可看做是一个记录,具有特定的格式进程可以按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。2.函数学习创建消息队列函数名:msgget函数原型:int msgget(key_t key,int msgflg)函数功能:打开或创建消息队列头文件: 返回值:成功:返回消息队列的id 失败:-1参原创 2015-05-06 14:54:47 · 519 阅读 · 0 评论 -
多线程程序设计
1.线程概念线程就是“轻量级”的进程线程与创建它的进程共享代码段和数据段线程拥有自己独立的栈2.函数学习创建线程函数名:pthread_create函数原型:int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine)(void *),void *arg)原创 2015-05-07 18:24:46 · 498 阅读 · 0 评论 -
多线程同步
多个线程按照规定的顺序来执行,即线程同步条件变量实现线程同步1.初始化: pthread_cond_t cond_ready = PTHREAD_COND_INITIALIZER;2.等待条件成熟:pthread_cond_wait(&cond_ready,&mut);3.设置成熟条件:pthread_cond_signal(&cond_ready);综合原创 2015-05-07 20:31:45 · 519 阅读 · 0 评论 -
TCP通讯程序设计
1.编程模型2.函数学习创建套接字 socket绑定地址 bind地址类型struct sockaddr { sa_family_t sa_family; char sa_data[14];}struct sockaddr_in { short int sin_family; short int sin_fa原创 2015-05-08 08:03:19 · 730 阅读 · 0 评论 -
共享内存通讯
1.核心理论共享内存是IPC机制中的一种,它允许两个不相关的进程访问同一段内存,这是传递数据的一种非常有效的方式。2.函数学习创建/获取共享内存函数名:shmget函数原型:int shmget(key_t key,size_t size,int shmflg)函数功能:创建或者获取共享内存,并返回其描述符头文件: 返回值:成功:返回创建或获取到的共享内存的描述原创 2015-04-29 22:31:32 · 511 阅读 · 0 评论 -
信号量互斥编程
1.核心理论信号量信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源(进程互斥)。进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可以用于进程同步。信号量分类:二值信号量:信号量的值只能取0或1计数信号量:信号量的值可以取任意非负值2.函数学习创建/打开信号量集合函数名:semget函数原型:int semget(key原创 2015-04-25 08:46:36 · 500 阅读 · 0 评论 -
静态函数库与动态函数库的设计
linux编程所需要的外部函数主要由函数库和系统调用提供,系统调用是linux内核实现的,而函数库是位于用户态的,函数库按链接方式的不同分为静态函数库和动态函数库原创 2015-04-15 20:33:42 · 341 阅读 · 0 评论 -
无名管道通讯编程
1. 核心理论通讯目的:数据传输 资源共享 通知事件 进程控制进程间通信IPC(interprocess communication)由以下几部分发展而来:1. UNIX进程间通信2. 基于System V进程间通信3. POSIX进程间通信POSIX(Portable Operating System Interface)表示可移植操作系统接口,电气与电子原创 2015-04-22 20:53:44 · 663 阅读 · 0 评论 -
库函数方式文件编程
1.核心理论库函数:基于c函数库的文件编程是独立于具体的操作系统平台的,不管是在windows下还是linux下,都是使用这些函数,使用库函数进行程序设计可提高程序的可移植性。流:对于标准的c函数库,它们的操作都是围绕流来进行的。流是一个抽象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存或者网络连接。类似的,当程序需要写入数据的时候,就会开启一个通原创 2015-04-19 07:42:42 · 599 阅读 · 0 评论 -
有名管道通讯编程
1. 核心理论有名管道又称为FIFO文件,因此我们对有名管道的操作可以采用操作文件的方式,如使用open,write,read等。有名管道可以用于任意进程间通信。FIFO文件对比普通文件1. 读取Fifo文件的进程只能以“RDONLY”方式打开。2. 写Fifo文件的进程只能以“WRONLY”方式打开。3. Fifo文件里面的内容被读取后,就消失了,但是普通文件的内原创 2015-04-23 10:47:49 · 578 阅读 · 0 评论 -
信号通讯编程
1.核心理论信号类型:linux系统支持的所有信号均定义在/usr/include/asm/signal.h中,其中常见的信号有:SIGKILL: 杀死进程SIGSTOP: 暂停进程SIGCHLD:子进程停止或结束时用来通知父进程2.函数学习发送信号函数名:kill函数原型:int kill(pid_t pid, int sig);函数功能:向进程发送信号原创 2015-04-23 20:54:58 · 408 阅读 · 0 评论 -
时间编程
1.核心理论 * Coordinated Universal Time (UTC):世界标准时间,也就是格林威治时间 (Greenwich Mean Time,GMT) * Calendar Time:日历时间,从1970年1月1日0点到此时经历的秒数来表示时间2.函数学习获取日历时间函数名:time函数原型:time_t time(time_t *t);头文件:函原创 2015-04-20 19:56:57 · 409 阅读 · 0 评论 -
linux应用程序地址布局
1.linux可执行文件结构linux可执行文件在存储时(没有调入内存)分为代码区(text),数据区(data),未初始化数据区(bss):1.代码区:存放cpu执行时的机器指令,通常代码区是可共享的,是只读的,因此常量数据在编译时是在代码段分配空间。代码区的指令包括操作码与操作对象,如果是立即数,将直接包含在代码中,如果是局部数据,将在运行时在栈上分配空间,然后再引用该数据的地址2原创 2015-04-15 20:22:42 · 598 阅读 · 0 评论 -
多进程程序设计
创建进程函数名:fork函数原型:pid_t fork(void);函数功能:创建一个子进程头文件;返回值:成功:在父进程中返回子进程的pid,在子进程中返回0 失败:-1#include void main(){ fork(); printf("program is end\n"); exit(0);}运行结果:program is end原创 2015-04-21 08:40:48 · 662 阅读 · 0 评论 -
UDP网络通讯编程
1.编程模型2.函数学习创建socket socket绑定地址 bind接收数据 recvfrom发送数据 sendto结束连接 close3.综合实例/* udp_server.c */#include #include #include #include int main(){ int sockfd; struct s原创 2015-05-08 11:57:52 · 534 阅读 · 0 评论