- 博客(166)
- 收藏
- 关注
原创 linux 用共享内存实现剪贴板原理
创建共享内存,但是在读共享内存之前,该共享内存不会被删除#include #include #include #include #include #include #include #include #include #include #include int shmid;void sig_handler(int sig){
2016-10-31 20:26:40 980
原创 linux c 分配释放内存 sbrk分配,brk释放
#include #include #include #include #include int main(int argc,char* argv[]){ void* pfirst = sbrk(sizeof(int)); *(int*)pfirst = 4; void* ptwo = sbrk(sizeof(double)); *(double*)
2016-10-31 20:21:31 778
原创 linux c实现递归删除命令 rm -r
#include #include #include #include #include #include #include #include #include void rmr(char* path){ DIR* dir = opendir(path); if(dir == NULL) perror("opendir"),exit(-1
2016-10-31 20:19:46 1625
原创 linux c实现rmdir命令
#include #include #include #include #include #include #include int main(int argc,char* argv[]){ if(argc != 2) printf("Usage: %s dirname",basename(argv[1])),exit(-1); if(rmdir
2016-10-31 20:15:57 2349
原创 linux c 实现rm命令
#include #include #include #include #include #include #include #include int main(int argc,char* argv[]){ if(argc != 2) printf("Usage: %s filename\n",basename(argv[0])),exit(0);
2016-10-31 20:13:42 3073 1
原创 linux c 通过内存映射,操作文件
#include #include #include #include #include #include #include /* MAP_SHARED: 映射区的数据直接反映到文件中 MAP_PRIVATE:映射区的数据不会反映到文件中*/struct msg{ char name[20]; int age;};
2016-10-31 20:12:27 1305
原创 linux c实现mkdir命令
#include #include #include #include #include #include int main(int argc,char* argv[]){ if(argc != 2) { printf("Usage:%s dirname",basename(argv[0])); exit(0); } if(m
2016-10-31 20:08:05 3884 1
原创 linux c实现ls命令
#include #include #include #include #include #include #include #include #include void ls(char* src){ DIR* dir = opendir(src); char path[256] = {0}; if(dir == NULL)
2016-10-31 20:06:18 2436
原创 linux c实现用printf向文件内写数据
#include #include #include #include #include #include int main(){ FILE* fd = fopen("msg.txt","a+"); stdout = fd; printf("%s___%s","ok","ok"); fclose(fd);}建议先保存s
2016-10-31 20:02:33 3366
原创 linux c 获得本机时间date
#include #include #include #include #include int main(){ printf("%ld\n",time(0)); time_t t = time(0); printf("%s\n",ctime(&t)); struct tm* pt = localtime(&t); char buf[256
2016-10-31 20:00:13 1073
原创 linux c实现文件复制
#include #include #include #include #include #include #include #define BUFFER_SIZE 4096int main(int argc,char* argv[]){ if(argc != 3) { printf("Usage:%s src dest\n",
2016-10-31 19:57:09 455
原创 linux c中修改文件权限
#include #include #include #include #include #include #include int main(int argc,char* argv[]){ if(argc != 2) { printf("Usage:%s filename\n",basename(argv[0])); exit(-1);
2016-10-31 19:55:48 3358
原创 linux c中的测试文件权限(access)
#include #include #include #include #include #include int main(int argc,char* argv[]){ if(access("ceshi",F_OK) == 0) { printf("文件存在!\n"); } if(access("ceshi",R_OK)==0)
2016-10-31 19:54:32 333
原创 C++中的预定义宏
__FILE__ 获取当前宏所在的文件名 %s __LINE__ 获取当前宏所在的行号 %d __TIME__ 获取当前宏所在文件的最后一次编译时间 %s __DATE__ 获取当前宏所在文件的最后一次编译日期- %s
2016-10-31 19:51:27 267
原创 C语言中的错误处理
c语言中的错误处理 1.1 错误信息(对错误编号的翻译) #include strerror(int errno); // 返回errno所 表达的信息。 2. perror函数(重中之重) 主要用于打印调用系统/库函数期间所产生的最后一个信息,如果参数不为空,则原样打印,后面跟着一个冒号,一个空格,具体错误信息,以及换行
2016-10-31 19:39:08 188
原创 linux c 对进程环境表的设置,删除,清空
#include #include #include int main(int argc,char* argv){ int ret = setenv("ysd","123",1); if(ret) perror("setenv"); printf("%s\n",getenv("ysd")); ret = putenv("yuansudong
2016-10-31 19:35:43 179
转载 gdb调试线程
gdb 多线程调试http://hi.baidu.com/hcq11/blog/item/9f5bfc6e696209d680cb4a25.html http://hi.baidu.com/litto/blog/item/759389dd198111375882dd1e.html http://blogold.chinaunix.net/u3/94700/showart_2389432
2016-10-31 19:18:49 201
原创 gdb常用命令
一.gdb常用命令:命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令frame(或f) 帧编号选择栈帧info(或i) locals查看当前栈帧局部变量的值list(或l)列出源代码,接着上次的位置往下列,每次列10行
2016-10-31 19:12:19 126
原创 linux c打印进程环境表
#include #include int main(int argc,char* argv[],char* envp[]){ char** p = envp; while(*p) { printf("%s\n",*p); p++; } return 0;}
2016-10-31 18:53:53 282
原创 linux进程中内存的划分
进程中的内存区域划分 int num; // 全局变量 默认初始值为0 位置在BSS段 int main(void) { int num; // 局部变量 默认初始值为随机数 位置在栈区 return 0; } (1) 代码区(Text) - 主要用于存放具体的功能代码,函数指针指向该区域; - 如可执行指令(2) 只读常量区(
2016-10-31 18:47:05 257
原创 http协议
HTTP协议 请求数据格式请求行(请求数据的第一行) : 请求方式 uri http版本请求头: user-agent: 用户代表 accept-Lanuage: 浏览器可以接受那些数据格式. accept-Encoding: gzip,defalte; accept-Lanuage:en,zh-cn connection:
2016-10-31 09:19:10 173
原创 linux下错误编码 部分
#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /* No such process */#define EINTR 4 /* Interrupted system call */#define EIO 5 /*
2016-10-28 21:03:53 202
原创 MFC中的状态栏
可以用CStatusBar类状态栏显示多种不同的信息,所以被划分多个不同的单元,每个单元被称为pane 创建状态栏窗口 CStatusBar::create()CStatusBar::SetIndicators\ BOOL SetIndicators( const UINT* lpIDArray, int nIDCoun
2016-10-28 21:00:28 276
原创 MFC获得当前时间
mfc获得当前的时间CTime time = CTime::GetCurrentTime();CString str = time.Format("%Y-%m-%d %H:%M:%S");
2016-10-28 20:59:21 838
原创 关于MFC中的LoadFrame函数(这个函数困扰了我好久啊 )
关于MFC中LoadFrame(菜单ID)其实这个函数调用方了create函数,并且将菜单加上,如果使用这种方式创建而我们又不想要菜单,可以通过SetMenu(NULL)进行删除
2016-10-28 20:58:28 2367
原创 关于MFC中的ON_UPDATE_COMMAND_UI
在 ON_UPDATE_COMMAND_UI 处理程序在 CCmdTarget派生类内使用。 CCmdUIclass CCmdUI成员名称 说明 CCmdUI::ContinueRouting 调用命令传送结构继续路由在处理程序中链的当前消息。 CCmdUI::Enable 启用或禁用此命令的用户界面项。 CCmdUI::SetChe
2016-10-28 20:57:23 2234
原创 MFC中的菜单
MFC的菜单 1. 相关类 CMenu类-封装了菜单句柄以及操作菜单的api函数. 2. cmenu类的使用. 添加菜单资源 加载菜单资源 CMenu::LoadMenu将菜单添加到窗口 CWnd::SetMenu(); 3. CMenu的菜单处理 ON_COMMAND(...)
2016-10-28 20:56:30 237
原创 MFC消息映射的原理及其实现
消息映射 1 概念 消息映射指的是消息的ID与消息的处理函数的映射关系。一般情况下, 一个消息都会对应一个单独的消息处理函数。 2 实现 2.1 在类的定义添加消息映射的声明宏 DECLARE_MESSAGE_MAP() 在类的实现中添加消息映射的实现宏 BEGIN_MESSAGE_
2016-10-28 20:55:42 574
原创 MFC消息的分类
MFC消息的分类 1 窗口消息(标准消息) ON_WM_XXX 2 命令消息 菜单,工具栏,加速键 ON_COMMAND(ID,处理函数) ON_COMMAND_range(id1,id2,function); 3. 通知消息 大部分控件消息 4.用户自定义消息(重点) #define USER_MSG WM_USER + 1
2016-10-28 20:54:52 318
原创 MFC之CFrameWnd类的探索
CFrameWnd::Create(.....)BOOL CFrameWnd::Create(LPCTSTR lpszClassName, // 应用程序类名LPCTSTR lpszWindowName, // 应用程序窗口名DWORD dwStyle,const RECT& rect,CWnd* pParentWnd,LPCTSTR lps
2016-10-28 20:53:59 1625
原创 linux 读写缓冲区的设置
* * 先读取缓冲区设置的情况 * 获得原始发送缓冲区大小 */ optlen = sizeof(snd_size); err = getsockopt(s, SOL_SOCKET, SO_SNDBUF,&snd_size, &optlen); * 获得原始接收缓冲区大小 */ optle
2016-10-28 20:52:45 3541
原创 CFrameWnd中的PreCreateWIndow虚函数探索
BOOL CFrameWnd::PreCreateWindow(CREATESTRUCT& cs){if (cs.lpszClass == NULL){ // AfxDeferRegisterClass 注册类,注册的是一个已经创建好的类VERIFY(AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG));cs.lpszClass
2016-10-28 20:17:07 396
原创 CWinApp中提供的虚函数
InitInstance 初始化ExitInstance 退出Run() 重写消息循环OnIdle() 空闲时调用成员变量 m_pMainWnd 框架窗口指针
2016-10-28 20:16:05 248
原创 MFC中的AfxWinMain函数探索
MFC中的AfxWinMain函数 是通过win32的_tWinMain函数调用 AfxWinMain的原形为: int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,_In_ LPTSTR lpCmdLine, int nCmdShow){ASSERT(hPrevIn
2016-10-28 20:15:04 6127
原创 mfc制作动态库
1.建立MFC DLL程序 然后可以看到 1. dll with MFC static linked //使用mFC的静态库制作dll2. dll width MFC dll linked // 使用mdc的动态库制作dll 3. 使用MFC库制作自己的扩展动态库程序 区别: 规则动态库可以被任何程序调用,扩展动态库只能被支持MFC程序调用
2016-10-28 20:11:36 407
原创 MFC动态改变窗口图标
HICON hIcon=AfxGetApp() ->LoadIcon(IDI_ICON);ASSERT(hIcon);AfxGetMainWnd() ->SendMessage(WM_SECTION,TRUE,(LPARAM)hIcon);
2016-10-28 20:03:20 1338
原创 MFC改变窗口的缺省风格
可以重载preCreateWindow,其中带的参数 CREATESTRUCT,结构体 可以通过eg: cs.style &= ~WS_CAPTION;来修改窗口的预定义风格
2016-10-28 20:02:08 263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人