Linux下用c语言实现whereis.
简单的一个whereis的实现,代码如下:
#include <stdio.h>
#include <errno.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
void dir_scan(char *path, char *file, char * fileToSearch);
int count = ; int main(int argc, char *argv[])
{
struct stat s;
if(argc != ){
printf("error argu!");
exit();
}
if(lstat(argv[], &s) < ){
printf("lstat error!");
exit();
}
if(!S_ISDIR(s.st_mode)){
printf("This is not a dir name!\n");
exit();
}
dir_scan("", argv[], argv[]);
exit();
} void dir_scan(char * path, char * file, char * fileToSearch)
{
struct stat s;
DIR * dirPtr;
struct dirent * dtPtr;
char dirName[];
memset(dirName, , * sizeof(char));
strcpy(dirName, path); if(lstat(file, &s) < ){
printf("asdasdad");
// fprintf(stdout, "The reason is %s\t ", strerror(errno));
exit(());
}
if(S_ISDIR(s.st_mode)){
strcat(dirName, file);
strcat(dirName, "/");
// printf("now the dir name is %s\n", file);
if((dirPtr = opendir(file)) == NULL){
printf("open dir error!\n");
exit();
printf("The count now is %d\n", count);
}
if(chdir(file) < ){
printf("chdir error!\n");
exit();
}
while((dtPtr = readdir(dirPtr)) != NULL){
if(dtPtr->d_name[] == '.')
continue;
dir_scan(dirName, dtPtr->d_name, fileToSearch);
}
if(dirPtr != NULL)
closedir(dirPtr);
if(chdir("..") < ){
printf("chdir error!\n");
exit();
}
}else{
if(strstr(file, fileToSearch) != NULL && (!strstr(file, "."))){
printf("%s%s\n", dirName, file);
// printf("adasdadad\n");
}
count++;
}
}
Linux下用c语言实现whereis.的更多相关文章
- Linux 下 expect 脚本语言中交互处理常用命令
Linux 下 expect 脚本语言中交互处理常用命令 1. #!/usr/bin/expect 告诉操作系统脚本里的代码使用那一个 shell 来执行.这里的 expect 其实和 Linux 下 ...
- 在Linux下开始C语言的学习
为什么要在linux下学习C语言? linux下可以体验到最纯粹的C语言编程,可以抛出其他IDE的影响 环境配置简单,一条命令就足够.甚至对于大多数linux发行版本,都已经不需要配置C语言的环境 查 ...
- linux下的C语言开发 进程创建 延伸的几个例子
在Linux下面,创建进程是一件十分有意思的事情.我们都知道,进程是操作系统下面享有资源的基本单位.那么,在linux下面应该怎么创建进程呢?其实非常简单,一个fork函数就可以搞定了.但是,我们需要 ...
- 在 Linux 下学习 C 语言有什么好处?
作者:宅学部落链接:https://www.zhihu.com/question/23893390/answer/832610610来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- Linux下的C语言编程
一.在Linux下的C语言编程所需工具(下面所列举的都是我编程所用的工具) 1.文本编辑器 Vim 2.编译链接工具 gcc 3.调试器 gdb 4.项目管理工具 make和makefile 二.VI ...
- windows下的c语言和linux 下的c语言以及C标准库和系统API
1.引出我们的问题? 标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样.当时就有了疑问,因为我们非常清楚 其本质是不可能一样的,源于这是俩个操作 ...
- 在Linux下运行C语言程序
市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境和各种常用的必备工具,国内使用较多的是Ubuntu(乌班图).CentOS.Deepin(深度Linux).本教 ...
- Linux下简单C语言小程序的反汇编分析
韩洋原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 写在开始,本文为因为参加MOO ...
- Linux下查看Go语言软件运行情况
在Linux下,使用"jps"可以查看用Java语言写的软件的运行情况,如果要查看GO语言写的软件的运行情况,可以使用"gops",但这不是系统自带的,需要进行 ...
随机推荐
- Codeforces Round#251(Div 2)D Devu and his Brother
--你以为你以为的.就是你以为的? --有时候还真是 题目链接:http://codeforces.com/contest/439/problem/D 题意大概就是要求第一个数组的最小值要不小于第二个 ...
- sql join on 与where
转载:http://www.cnblogs.com/Jessy/p/3525419.html left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录. right join : ...
- pkg-config用法和gcc cflags
pkg-config程序是干什么用的?简单的说就是向用户向程序提供相应库的路径.版本号等信息的程序. 譬如说我们运行以下命令:pkg-config 查看gcc的CFLAGS参数 $pkg-confi ...
- Team Foundation 中的错误和事件消息
Visual Studio Team System Team Foundation 中的错误和事件消息 Team Foundation 通过显示错误消息和事件消息来通知您操作成功以及操作失败.一部分错 ...
- Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) C - Table Tennis Game 2
地址:http://codeforces.com/contest/765/problem/C 题目: C. Table Tennis Game 2 time limit per test 2 seco ...
- Sublime : python环境
1.安装python.注意区分32位和64位版本,勾选下图红框实现自动将python安装位置添加到环境变量 2.键盘win+r,输入cmd调出命令行,输入python回车,根据结果查看时候安装成功 3 ...
- SpringBoot 事务隔离性和传播性
propergation 传播性 Spring中七种Propagation类的事务属性详解: REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择. SUPPORTS ...
- spring security使用哈希加密的密码
之前我们都是使用MD5 Md5PasswordEncoder 或者SHA ShaPasswordEncoder 的哈希算法进行密码加密,在spring security中依然使用只要指定使用自定义加密 ...
- powerdesigner 左边的列表框弄不见了怎么弄出来
快捷键 Alt + 0(数字零) 或者点击下面图片的 红色标识位置.就出来了.
- 初入Spring-boot(一)
一.利用eclipse快速创建Spring-boot项目 1.首先去http://start.spring.io网站,勾选所需要的starter,如图: 选择完之后下载该文件,打开后发现是一个正常的m ...