basename()—众里寻他千百度,那人却在linux函数库
来源:互联网 发布:mac上软件删不掉 编辑:程序博客网 时间:2024/04/25 22:35
这是一桩因不熟悉linux函数引发的惨案:
我想在linux上用C借助socket实现一个文件传输的软件,输入文件的目录后将该文件从客户端发送到服务器,包括该文件的名称与内容。这就比较简单了,我可以用结构体,结构体的成员分别为文件的名称与文件的内容。
那么问题来了,该怎样从输入的文件目录中获取到该文件的名称呢?
我想要的效果是这样的:
input the file directroy:
/tmp/project/test/test.txt
the file name is: test.txt
于是,我踏上了找寻能够从文件目录中获取文件名称的函数的不归之路。(我没有想着自己写函数,将输入的文件目录当作一个字符串然后解析。我觉得这样子实在是太麻烦。)
所以我在百度上输入这样的关键词:linux C socket 从文件目录中获取文件的名称得到下面的解决方案:
int stat(const char* file_name,struct stat *buf)
这个函数可以根据文件的路径取得该文件的状态,stat是个结构体,结构成员包含了各种文件的属性却独独没有,我想要的file_name。
于是,我继续找寻。
是跟目录相关的,opendir,readdir吗?不是!
有人告诉我可以通过读/proc/pid获取,这种方法我没有试。
最后,我发现一个致命的问题,我应该百度:从文件路径中读取文件名而不是文件目录
皇天不负有心人人,我终于找到了!
basename()
basename是个shell命令也是linux自带的系统函数。
总结:
一、对于linux函数库不了解,导致遇到问题时不知道用哪个函数去解决。
二、刚开始搜索函数的出发点就是错的,不应该是从文件目录中获取文件名,而应该是文件路径中获取文件名。否则无论如何是搜索不到basename()的。
- basename()—众里寻他千百度,那人却在linux函数库
- 众里寻他千百度,蓦然回首,那人却在。。。
- 众里寻他千百度,蓦然回首,那人却在。。。。。
- 众里寻他千百度,蓦然回首,那人却在灯火阑珊处
- HUDSON邮件模板问题 <众里寻他千百度,蓦然回首,那‘人’却在灯火阑珊处>
- 众里寻她千百度,那人却在优衣库。
- 转载:HUDSON邮件模板问题 <众里寻他千百度,蓦然回首,那‘人’却在灯火阑珊处>
- 众里寻他千百度
- linux学习-oracle查询exists之众里寻他千百度
- 众里寻他千百度之字符集
- 腾讯offer-众里寻他千百度
- 众里寻 Bug 千百度,蓦然回首,它却在隔壁老张处……
- 众里寻他千百度-百度发展的秘密
- [!] Unable to satisfy the following requirements:众里寻他千百度。
- 众里寻他千百度-- 轻量级持久化框架
- 众里寻他千百度所涉及的算法
- AutoHotkey,曾经众里盼他千百度
- 众里寻BUG千百度
- Ensemble Learning
- LeetCode(129) Sum Root to Leaf Numbers
- Atom飞行手册翻译: 4.4 Atom中的序列化
- POJ 2000 Gold Coins 简单模拟
- DOM文档对象的简单介绍
- basename()—众里寻他千百度,那人却在linux函数库
- Android Java设置一个图片的颜色为透明色(不显示,不是背景色),可用于无透明通道的ImageView
- Eclipse工具条中添加下拉按钮
- Course Schedule
- 使用Material Design 应用主题
- UVA-1068 Sum-1-N之间所有数的和
- 进程基础总结
- hihoCoder 1141 二分·归并排序之逆序对
- [暴力搜索] poj 3187 Backward Digit Sums