C/C++ linux c获取文件路径和文件名 linux提供了两个函数分别用来获取文件所在的目录和文件名: 它们被包含在头文件libgen.h中,dirname取得的路径名不包含最后的/,basename取自于最后一个下划线后的内容。 以下是几个... 11月01日评论 阅读全文
C/C++ linux多进程间文件共享机制 一、原理 linux支持多进程间共享打开文件,即同一时刻允许多个进程同时打开同个文件,每个进程之间的读写操作互不影响。 为了实现这一个机制,linux内核使用了三种数据结构来表示打开的文件,它们之间的... 10月31日评论 阅读全文
C/C++ 一次undefined reference to ***的编译错误记录 一、问题描述 在编译C++程序时,遇到以下问题: 看到错误的第一直觉是共享库出问题了,因为以前出现这个问题都是因为库没有加进来,但是反复确认过后发现共享库并没有问题。 第一:编译的时候使用-l选项包含... 10月08日2 阅读全文
C/C++ c语言可变长参数传递问题 一、问题描述 C语言中的函数提供了一种可变长参数机制,这个机制使得我们在操作的时候充分自定义自己的功能,例如使用最多的printf函数: 它的函数声明为:printf(const char *fmt,... 09月14日评论 阅读全文
C/C++ 程序的编译和链接过程 一、概述 一个程序在从源码变成二进制程序之间一共有四个步骤:预处理,编译,生成目标文件,链接。 以下展示了一个简单的加法程序的编译过程: 二、预处理 预处理阶段主要有以下的操作: 头文件替换 宏定义替... 09月14日评论 阅读全文
C/C++ std::string中size()和length()的区别 STL中的string类有两个方法size()和length()用来返回字符串的长度。 两者在实现上没有区别: 07月02日评论 阅读全文
C/C++ Linux c中的信号函数 一、信号函数的理解 C语言中信号函数的原型为: 这个函数定义看起来十分复杂,可以分为以下两步来理解: 首先看signal(int signo, void (*func)(int))部分,signal是... 05月21日评论 阅读全文
C/C++ GCC警告“missing sentinel in function call [-Wformat=]” 使用exec族函数时抛出以下警告: 错误的原因在man page中找到: execv, execvp, execvpe这几个函数可以给新创建的进程传递参数,但是The array of pointer... 05月21日评论 阅读全文
C/C++ C++中return,exit和_exit的区别 三者的区别: return作用于函数,使用return只是退出当前函数,而exit和_exit直接终止程序。 return和exit在退出各自作用域前会自动刷新缓冲区,_exit不会刷新当前缓冲区。 ... 05月21日评论 阅读全文
C/C++ Linux c中静态库和动态库的使用方法 一、静态库和动态库 静态库是指程序在编译阶段就把库文件嵌入到程序中的三方库,这种行为在程序运行前就已经决定了,程序在编译完成后不再依赖库文件。 动态库和静态库不一样,它是在程序运行期间才发生的调用行为... 05月18日评论 阅读全文