linux c获取文件路径和文件名

linux提供了两个函数分别用来获取文件所在的目录和文件名: 它们被包含在头文件libgen.h中,dirname取得的路径名不包含最后的/,basename取自于最后一个下划线后的内容。 以下是几个示例: 路径 dirname basename /usr/lib /usr lib /usr/ / ...
阅读全文
linux多进程间文件共享机制 C/C++

linux多进程间文件共享机制

一、原理 linux支持多进程间共享打开文件,即同一时刻允许多个进程同时打开同个文件,每个进程之间的读写操作互不影响。 为了实现这一个机制,linux内核使用了三种数据结构来表示打开的文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。 1.1 内核数据结构 每个进程的进程表...
阅读全文

一次undefined reference to ***的编译错误记录

一、问题描述 在编译C++程序时,遇到以下问题: 看到错误的第一直觉是共享库出问题了,因为以前出现这个问题都是因为库没有加进来,但是反复确认过后发现共享库并没有问题。 第一:编译的时候使用-l选项包含了库文件,并且库里面的函数也存在。 第二:库确实存在,不然也不会报上面的错误了,报的错误应该是: 试...
阅读全文

c语言可变长参数传递问题

一、问题描述 C语言中的函数提供了一种可变长参数机制,这个机制使得我们在操作的时候充分自定义自己的功能,例如使用最多的printf函数: 它的函数声明为:printf(const char *fmt, ...);,其中的...就代表不固定的参数,使用起来十分方便。但是在函数嵌套的时候,不能直接使用....
阅读全文
程序编译和链接的过程 C/C++

程序编译和链接的过程

一、概述 一个程序在从源码变成二进制程序之间一共有四个步骤:预处理,编译,生成目标文件,链接。 以下展示了一个简单的加法程序的编译过程: 二、预处理 预处理阶段主要有以下的操作: 头文件替换 宏定义替换 删除注释 预处理指令处理 在GCC中,-E选项用于预处理,执行g++ main.cpp -E -...
阅读全文
Linux c中的信号函数 C/C++

Linux c中的信号函数

一、信号函数的理解 C语言中信号函数的原型为: 这个函数定义看起来十分复杂,可以分为以下两步来理解: 首先看signal(int signo, void (*func)(int))部分,signal是一个函数,它的形参为一个int类型的signo和一个函数指针func。 除去形参部分后剩下的就是返回...
阅读全文

C++中return,exit和_exit的区别

三者的区别: return作用于函数,使用return只是退出当前函数,而exit和_exit直接终止程序。 return和exit在退出各自作用域前会自动刷新缓冲区,_exit不会刷新当前缓冲区。 例如以下代码的f函数中使用return,exit和_exit退出的结果都不一样。 linux环境中,...
阅读全文
阿里图标库的使用方法 前端

阿里图标库的使用方法

阿里图标库首页:阿里巴巴矢量图标库,首先进入注册账户,然后创建新项目: 进入项目页面后,右上角创建新项目:   新弹出的对话框中填入项目名称和字体类前缀: 项目创建完成后进入图标库挑选图标: 选择需要的图标添加到购物车: 选好图标后把购物车里图标添加到项目,购物车在右上角: 添加完成后会自...
阅读全文