c
文章平均质量分 63
wolfsun3
这个作者很懒,什么都没留下…
展开
-
%d, %ld, %lld 区别
相信下面几个表达方式,就能说明问题吧:%d=int, %ld=long, %lld=long long;在32位编译器上,int=long=32bit;long long=64bit。不用解释了吧。原创 2015-08-18 17:40:25 · 116137 阅读 · 4 评论 -
c笔记07---递归,清空缓冲区,汉诺塔,随机数,重复数,exit(),return
1. fflush(stdout); 这条语句可以把输出缓冲区里的内容立刻显示在屏幕上;2. return; 结束当前函数 exit(); 结束整个程序,需要在程序开头处加入 #include 4. 使用数组作形参和实参是同一个数组,函数中修改了数组的内容,调用函数可以看到数组的变化。 若不用数组形参,而使用其他形参,很可能无法计算,原创 2015-09-30 16:31:02 · 424 阅读 · 0 评论 -
uc笔记02---错误处理,练习:实现求和求平均值等功能,errno
1. 通过返回值表示错误 1)返回合法值表示成功,返回非法值表示失败 #include #include long fsize (const char* path) { FILE* fp = fopen (path, "r"); // 失败返回 0 if (! fp)原创 2015-09-30 16:53:23 · 500 阅读 · 0 评论 -
uc笔记12---竞争与同步,互斥量,信号量,死锁,条件变量,哲学家就餐问题
1. 竞争与同步 当多个线程同时访问其所共享的进程资源时,需要相互协调,以防止出现数据不一致、不完整的问题;这就叫线程同步。 范例:vie.c #include #include #include unsigned int g_cn = 0; void* thread_pr原创 2015-09-30 17:07:16 · 1215 阅读 · 0 评论 -
uc笔记06---chmod/fchmod,chown/fchown/lchown
1. chmod/fchmod 修改文件的权限 #include int chmod ( const char* path, // 文件路径 mode_t mode // 文件权限 ); int fchmod ( int fd, // 文件路径 mod原创 2015-09-30 16:58:47 · 555 阅读 · 0 评论 -
uc笔记05---sync/fsync/fdatasync,fcntl,文件锁,stat/fstat/lstat
1. sync/fsync/fdatasync 1)大多数磁盘 I/O 都通过缓冲进行,写入文件其实只是写入缓冲区, 直到缓冲区满,才将其排入写队列。 2)延迟写降低了写操作的次数,提高了写操作的效率, 但可能导致磁盘文件与缓冲区数据不同步。 3)sync/fsync/fdatasync 用于强制磁盘文件与缓冲区同步。原创 2015-09-30 16:58:07 · 773 阅读 · 0 评论 -
uc笔记04---文件系统,文件常用命令(软/硬链接),文件描述符
1. 系统调用 应用程序 ------------+ | | v | 各种库 | (C/C++标准库、Shell命令和脚本、 | X原创 2015-09-30 16:56:01 · 808 阅读 · 0 评论 -
uc笔记01---Unix,Linux,程序构建过程,gcc,头文件,预处理,环境变量配置
1. Unix 操作系统 1)简介 美国 AT&T 公司贝尔实验室, 1971 年, 肯.汤普逊、丹尼斯.里奇。 多用户、多任务、支持多种处理器架构。 高安全性、高可靠性,高稳定性。 既可构建大型关键业务系统的商业服务器应用, 也可构建面向移动终端、原创 2015-09-30 16:51:28 · 729 阅读 · 0 评论 -
c笔记04---输出格式控制字符
1. 输出格式控制字符 %d(%i) 十进制带符号整数,正数不输出符号; %ld 十进制长整型输出; %c 输出单个字符,参数为字符 char; %s 输出字符串,参数为 char 指针,显示字符串中所有字符,直到计算机找到 '\0' 停止; %e 输出浮点数,以指数形式输出单、双精度实数,默认 6 位小数; %f 输出浮点数,以原创 2015-09-30 16:27:29 · 765 阅读 · 0 评论 -
c笔记09---字符数组及字符串,预处理,宏,条件编译
1. C语言中,使用第一个字符的地址,表示整个字符串。'\0' 是字符串的结尾字符,他的位置决定了一个字符串中有效字符变量的个数。 '\0' 在 ASCII 中对应数字 0 ;2. 字面值是程序中表示字符串的一种写法,用双引号表示,不可以被修改。 多个相同内容的字面值在程序运行时都是同一个地址。 多个连续的字符串在编译时会被合并成一个。原创 2015-09-30 16:33:40 · 585 阅读 · 0 评论 -
uc笔记10---网络通信,套接字(Socket),基于 TCP 协议的客户机/服务器模型
1. 基本概念 ISO/OSI 七层网络协议模型 =================================================================== -+-------------+-----------------+- | 应用层 |原创 2015-09-30 17:05:12 · 1523 阅读 · 0 评论 -
uc笔记09---进程通信,管道,进程间通信,共享内存,消息队列,信号量,IPC 命令
1. 基本概念 何为进程间通信: 进程间通信 (Interprocess Communication, IPC) 是指两个, 或多个进程之间进行数据交换的过程。 进程间通信分类: 1) 简单进程间通信:命令行参数(单向)、环境变量(单向)、信号(双向)、文件(双向)。 2) 传统进程间通信:管道 (fifo/pipe)。原创 2015-09-30 17:04:05 · 953 阅读 · 0 评论 -
uc笔记08---信号处理,signal,子进程的信号处理
1. 基本概念 1)中断 中止(注意不是终止)当前正在执行的程序,转而执行其它任务。 硬件中断:来自硬件设备的中断。 软件中断:来自其它程序的中断。 2)信号是一种软件中断 信号提供了一种以异步方式执行任务的机制。 3)常见信号 SIGHUP(1):连接断开信号 如果终端原创 2015-09-30 17:02:07 · 2687 阅读 · 0 评论 -
c笔记02---数据类型
1. 整型 int signed short int 有符号短整型,简写:short/int,字长 2 字节(16 位),范围:-32768~32767(也有的计算机里面,int 是 4 位) signed long int 有符号长整型,简写:long,字长 4 字节 ; unsigned short int 无符号短整型,简写 unsigned int,2原创 2015-09-30 16:24:50 · 485 阅读 · 0 评论 -
c笔记10---多文件操作,Makefile,结构体 struct 及结构体变量,重命名 typedef
1. 一个程序分装在两个 .c 文件里面(同一个文件夹),需要增加一个 .h 文件,然后两个 .c 文件都 include 那个 .h 头文件。 而且一个 .h 头文件只能链接一个 .c 文件。 头文件里面的东西在程序运行的时候,是不存在的,所以,函数声明可以放在头文件里,变量声明不可以。 编写头文件的时候,要使用条件编译,避免头文件被多次编译。 一个原创 2015-09-30 16:34:52 · 2433 阅读 · 0 评论 -
uc笔记07---进程管理,PID,#ps,getxxxid,fork,vfork,system
1. 进程与程序 1) 进程就是运行中的程序。一个运行着的程序, 可能有多个进程。进程在操作系统中执行特定的任务。 2) 程序是存储在磁盘上,包含可执行机器指令和数据的静态实体。 进程或者任务是处于活动状态的计算机程序。2. 进程的分类 1) 进程一般分为 交互进程、批处理进程 和 守护进程三类。 2) 守护进原创 2015-09-30 17:00:39 · 746 阅读 · 0 评论 -
c笔记01---扩展名简介,linux 常用命令,vi 设置
1. gcc 扩展名简介: .c c语言 .cc c++语言 .C c++语言 .cpp c++语言 .h 头文件 .i 预处理过的c语言 .ii 预处理过的c++语言 .o 编译后的目标文件,二进制原创 2015-09-30 16:23:02 · 600 阅读 · 0 评论 -
uc笔记11---线程管理,线程函数:创建、等待、获取、比较、终止、取消, 线程属性
1. 基本概念 1)线程就是程序的执行路线,即进程内部的控制序列,或者说是进程的子任务。 2)线程,轻量级,不拥有自己独立的内存资源,共享进程的代码区、数据区、堆区(注意没有栈区)、 环境变量和命令行参数、文件描述符、信号处理函数、当前目录、用户 ID 和组 ID 等资源。 3)线程拥有自己独立的栈,因此也有自己独立的局部变量。 4)一个进程原创 2015-09-30 17:06:35 · 814 阅读 · 0 评论 -
c笔记12---数组指针,文件处理 FILE,可变长参数
1. 数组指针和指针数组: int value[3] = {5}; int *p_value = value; // 普通数组变量声明方法 int (*p_value1)[3] = &value; // 数组指针声明方法 数组指针是对数组名称取地址,和指针数组不一样; 变量地址可以指这个变量原创 2015-09-30 16:37:10 · 964 阅读 · 0 评论 -
linux下,让程序在后台运行
让程序后台运行的方法如下:1.在代码中添加如下代码即可:daemon(0, 0);2.调用编译好的二进制时候,后面加&,例如system("/home/sun/xxx &");原创 2015-07-24 17:18:24 · 668 阅读 · 0 评论 -
数据结构和算法学习笔记
使用建议:建议使用 gedit 软件查看本笔记,可以让代码中的关键字、注释等高亮显示,增强可读性;另外建议把 gedit 软件首选项里的制表位设置为 4(默认为 8),代码中的缩进就会更合理;字体建议用 13 号。《目录》DAY01---逻辑结构,物理结构,数据结构基本运算,堆栈,顺序表堆栈:任意进制转换(练习),链式表堆栈DAY02---队列,顺序表队列,链式表队列,堆栈实现原创 2015-09-30 15:28:51 · 529 阅读 · 0 评论 -
修改ipxe源码,实现隐藏本地磁盘和读写转移功能(一)
研究得出初步结论,ipxe将服务器端磁盘映射为0x80驱动,而本地从0x81开始,依次往后排。Ipxe通过替换int13等中断,实现自己封装的读写接口,但依然保留原接口,当读写服务端磁盘的时候,调用替换后的接口;当读写本地磁盘(包括本地光驱、usb设备等)的时候,调用原读写接口。 通过重新封装原int13接口,实现本地磁盘的隐藏;通过重新封装ipxe-int13实现读写的转移。原创 2015-09-30 14:23:02 · 2950 阅读 · 0 评论 -
在ipxe源码基础上,重新封装读写本地磁盘接口
以下代码经过测试通过。想隐藏本地磁盘和读写转移,可以查看上两篇博客。/** * bios int 13 * * @author sun (9/22/2015) * * @param ix86 all register for int 13 * * @return __asmcall void */static __asmcall void int13_bios原创 2015-09-30 14:38:46 · 1609 阅读 · 4 评论 -
qt学习笔记
使用建议:建议使用 gedit 软件查看本笔记,可以让代码中的关键字、注释等高亮显示,增强可读性;另外建议把 gedit 软件首选项里的制表位设置为 4(默认为 8),代码中的缩进就会更合理;字体建议用 13 号。《目录》DAY01---qt 安装,qt 编程环境,中文乱码问题(QLabel),按钮类,父窗口,滑块/微调框DAY02---输入框,加法器,自定义信号/槽函数,原创 2015-09-30 15:32:16 · 1032 阅读 · 0 评论 -
修改ipxe源码,实现隐藏本地磁盘和读写转移功能(二)
4.代码实现流程图:4.1隐藏本地磁盘通过设置寄存器ah值,达到返回错误,隐藏本地磁盘目的;注意,这里需要设置对应标志寄存器,目的是让函数退出后,不再调用bios-int13。/** * hide local disk by int 13. * * @author sun (9/17/2015) * * @param int13 Emulated原创 2015-09-30 14:27:55 · 1996 阅读 · 3 评论 -
linux c获取股票脚本
#include #include #include #include #include #include #include #include #include #include #include #define BUFSIZE 0xF000 void geturl(char* url) { int cfd; st转载 2015-09-30 15:49:28 · 760 阅读 · 0 评论 -
linux python3.4获取股票脚本
#!/usr/bin/env python # -*- coding:utf-8 -*- import urllib.request #debug=True debug=False class Utility: def ToGB(str): if(debug): print(str) return str.d转载 2015-09-30 15:50:41 · 839 阅读 · 0 评论 -
c笔记03---标志符定义
1. 代码开始输入格式: #include // 预处理指令 int main() // 只能是 int 型 { return 0; } 预处理在编译阶段就进行处理了 #include 表示从系统默认的路径下查找这个头文件; " " 表示从当前工原创 2015-09-30 16:26:13 · 348 阅读 · 0 评论 -
c笔记06---数组
1. 数组,输入一个不大于五位数的整数,每位数字,分别存储在数组里: 拆分为每位数字:value % 10; value /= 10; 为保证输入的是三位(或更小)数,导致数组输出时出现 0 ,所以给数组初始化为 -1。2. arr 是数组名称,指的是首个数组地址; arr, arr[0] 地址一样; arr = 1; 错误,数组名称地址原创 2015-09-30 16:29:52 · 293 阅读 · 0 评论 -
c笔记08---变量,栈,秒表练习,关键字 static,指针变量和变量的指针
1. 变量分成三种:全局变量,局部变量和块变量 变量的作用域指的是“变量名“的作用域,而非变量;生命周期和作用域一致; 变量和变量名是不一样的; 全局变量在程序开始前就默认初始化为 0;static 静态变量在编译的时候,初始化为 0; 若是多个变量同名,调用最近的那个变量(就近原则);2. 栈是由一组变量组成,用数组表示,栈使用变量方式原创 2015-09-30 16:32:13 · 432 阅读 · 0 评论 -
c笔记11---联合,枚举,堆 malloc,大/小端存储,二级指针,函数指针,qsort 排序,指针数组
1. 联合,通过联合可以使用不同的方式操作内存中同一段区域。 typedef union { 变量声明语句 } uni; 这里的每个变量具有排他性,计算机无法同时执行里面的变量。 typedef union { char c; int i; double j; } union 存原创 2015-09-30 16:36:22 · 699 阅读 · 0 评论 -
linux c 九宫格
#include "stdio.h"//定义栈的最大长度#define MAXSTACKLENGTH 81//待求解的九宫格矩阵,空白位置用0表示int jiuGongArray[][9]={{0,0,0,0,4,0,0,3,2}, {4,0,0,0,0,1,0,0,0}, {5,3转载 2015-09-30 15:52:14 · 1088 阅读 · 0 评论 -
log日志写法
#define LOG_FILE "./log.txt"#define MAX_LOG_SIZE 20971520 //20M#define G_LOG(fmt, ...) g_mylog(__FILE__, __LINE__, __FUNC原创 2015-09-30 15:35:06 · 1126 阅读 · 0 评论 -
c笔记05---逻辑表达式,break,continue 区别
1. 逻辑表达式:闰年表示方法 if(!(year % 400) || (!(year % 4) && (year % 100)))2. 内存本质上就像许多个大小一样的盒子的几何,每个盒子相当于一个字节,而一个字节就是八位二进制数。 sizeof 算出来的是内存中占用的字节个数,它是 c 语言的一个关键字,不是函数;3. 1 代表负数,0 代表原创 2015-09-30 16:28:35 · 453 阅读 · 0 评论 -
uc笔记03---环境变量,内存管理,进程映像/堆栈区别,虚拟内存,malloc 特点
1. 环境变量 #env // 查看环境变量 环境表 1) 每个程序都会接收到一张环境表, 是一个以 NULL 指针结尾的字符指针数组。 2) 全局变量 environ 保存环境表的起始地址。 +---+ environ -> | * --> HOME=/roo原创 2015-09-30 16:54:44 · 597 阅读 · 0 评论