
Linux高级编程
俩个人壹辈子
文章为平时工作学习中的笔记记录,不当之处烦请指正,谢谢!
展开
-
高级编程之文件I/O(一)
Linux操作系统当中IO都是对文件的操作 1.标准IO 一般都是对普通文件操作 是一种有缓存的IO 2.文件IO 一般都是对设备文件操作 是一种没有缓存的IO标准IO: stdio.h Dennis Ritchie printf scanf getchar putchar gets puts getc putc fgets fputs f原创 2016-01-22 13:54:12 · 296 阅读 · 0 评论 -
高级编程之网络编程(四)
广播 组播广播 ===》只能用UDP协议形式发送数据 ===》不要求客户端一定在线。特点: 必须要发送的广播地址 ===》局域网中的最大地址。 必须要设置广播端程序的套接字属性允许发送广播。流程:发送端: sokcet()===>setsockopt() ===>sendto() ===>close() 1、setsockopt() ====>允许发送广播原创 2016-01-22 15:24:09 · 342 阅读 · 0 评论 -
高级编程之网络编程(三)
IO 模型1、阻塞模型 fifo pipe read fgetc fgets fread recv recvfrom 以上获取数据的函数默认都是阻塞方式接收数据。2、非阻塞模型 2.1 在开始阶段的open函数部分调整 。 open("./fifo",O_RDONLY|O_NONBLOCK); 函数 open read ....都不会阻塞。 2原创 2016-01-22 15:23:12 · 292 阅读 · 0 评论 -
高级编程之网络编程(二)
常用网络测试工具:1、telnet 默认的redhat 企业版本 和 win 8 以上系统不再支持该程序。 早期用于远程管理网络设备的系统命令。 格式: telnet ip地址 端口 eg: telnet 192.168.0.1 8888 注意:断开可以不写,默认链接的是23 号端口。2、netstat 测试网路端口的使用情况。 netstat原创 2016-01-22 15:21:00 · 274 阅读 · 0 评论 -
高级编程之网络编程(一)
TCP/IP 协议族:常用协议物理链路层: ARP RARP MTU网络层: IP ICMP RIP OSPF IGMP ?传输层: TCP UDP应用层: TFTP HTTP HTTPS SNMP SMTP DNS TCP 协议 ===》RFC 793 TCP 传输控制协议: 有链接 可靠 实时 UDP 协议 ===》RF原创 2016-01-22 15:19:53 · 333 阅读 · 0 评论 -
高级编程之进程间通信(三)
进程间通信(三) IPC 通信之 ==》信号量集===》信号灯 线程中用的是 posix无名信号量 进程中用的是 system V 的信号灯框架: key ==》申请信号量 ==》PV操作 ===>关闭信号量 semget semop semctl#include 原型:int semget(key_t key,原创 2016-01-22 15:12:47 · 280 阅读 · 0 评论 -
高级编程之进程间通信(二)
进 程 间 通 信 2: system V 的IPC通信: IPC 对象 ===》进程间通信 ===》IPC对象: 消息队列 共享内存 信号量集基本通信框架: key ==>IPC对象 ===》读写 ===》关闭 ===》卸载key值的获取:1、通过ftok函数获取2、使用IPC_PRIVATE私有键值3、使用自定义的键值头文件: sys原创 2016-01-22 15:11:09 · 327 阅读 · 0 评论 -
高级编程之进程间通信(一)
进程间通信:三大类1、古老的通信方式 无名管道 有名管道 信号 ====》唯一的异步通信方式2、systemV IPC 对象 消息队列 共享内存 ===》效率最高的通信方式 信号量集 3、BSD socket 套接字 域内套接字 ==》单机进程间通信 网络套接字 ==》不同主机上的进程间通信古老的通信方式:1、管道原创 2016-01-22 15:08:57 · 379 阅读 · 0 评论 -
高级编程之线程(二)
线 程 的 传 参 1、pthread_create(tid,NULL,fun,arg); ===>arg 回调函数参数1.1 向子线程中传入数字 1.2 向子线程中传入字符串1.3 向子线程中传入结构体练习:设计一个多线程函数,并向其中送入一个结构体变量 在线程中打印输出结构体变量的所有成员变量值。2 、多线程的互斥 ===》互原创 2016-01-22 14:12:57 · 300 阅读 · 0 评论 -
高级编程之线程(一)
线 程 线程 ===》linux 线程 ===》posix线程 ===》pthread库1、线程的概念 线程是一个轻量级的进程 是一个进程中的多个任务 它是CPU调度的最小单位2、线程的特点: 1、是第三方开发的库 ==》pthread库 编写时候要包含: pthread.h 编译的时候要加: -lpthread 2、资源共原创 2016-01-22 14:10:43 · 270 阅读 · 0 评论 -
高级编程之进程(三)
进 程 的 使 用 1、多进程逻辑处理2、exec函数族启动其他进程3、制作守护进程 exec函数族1、 l ==>列表 v ==》数组/容器 原型:int execl(const char *path, const char *arg, ...);功能:通过该函数可以将指定的path路径下程序名称为arg的 程序启动起来。参数: p原创 2016-01-22 14:06:19 · 229 阅读 · 0 评论 -
高级编程之进程(二)
进 程 1、进程的退出 return ===>只有在main函数中执行才能将进程退出。 exit() ===》进程退出函数,会自动刷新缓存区。 _exit(); ===》强制退出进程,不会刷新缓存区。2、特殊进程 2.1 孤儿进程 ===》父进程退出,而子进程单独存在。 子进程变成孤儿进程。 2.2 僵尸进程 ===》父进程存在,原创 2016-01-22 14:05:06 · 226 阅读 · 0 评论 -
高级编程之进程(一)
进 程 1、进程的概念 1、进程是一个程序的一次执行过程。 2、进程是一个可独立调度的任务,是操作系统的最小调度单位。2、进程和程序的区别 2.1 程序:静态 是一种资源文件 没有执行过程 2.2 进程:动态 有生命周期的 执行过程。3、进程的特点和分类 3.1 特点: PID: ===》进程标识符 ===》进程在操作系统中的合法唯一标识。 PP原创 2016-01-22 14:02:28 · 239 阅读 · 0 评论 -
高级编程之目录(一)
目 录 流 1.DIR *opendir(const char *name); 功能: 打开一个目录获得一个目录流指针 参数: name:文件名 返回值: 成功目录流指针 失败返回NULL 2.struct dirent *readdir(DIR *dirp); 功能: 从目录流中读到一个文件的信息 参数: dirp:目原创 2016-01-22 13:58:08 · 372 阅读 · 0 评论 -
高级编程之目录(二)
目 录 操 作 打开目录 ===》遍历目录 ===》切换目录 ===》关闭目录 opendir() ===>readdir()/chdir() ====>closedir()头文件:#include #include #include 原型:DIR *opendir(const char *name);功能: 从指定的name路径+目录名下打开该目原创 2016-01-22 14:00:35 · 257 阅读 · 0 评论 -
高级编程之文件I/O(二)
函 数 接 口 1.time time_t time(time_t *t); 功能: 获得1970年到现在所过的秒数 参数: t:要存放秒数空间的指针 返回值: 成功返回所过的秒数 失败返回(time_t *)(-1) 2.localtime struct tm *localtime(const time_t *tim原创 2016-01-22 13:55:47 · 229 阅读 · 0 评论 -
高级编程之数据结构
数 据 库1、常用名词 DB 数据库 DBMS 数据库管理系统 MIS 管理信息系统 OA 办公自动化2、常用的数据库管理系统 2.1 大型 oracle 甲骨文 DB2 2.2 中型 mysql ms sql server 2.3 小型 sqlite3 access3、嵌入原创 2016-01-22 15:25:09 · 302 阅读 · 0 评论