windows linux—unix 跨平台通信集成控制系统----文件搜索
跨平台的网络通信,跟设备的集成控制,牵扯到在各种平台下的文件搜索问题,windows下面的已经有了。
地址如下:
http://blog.csdn.net/wangyaninglm/article/details/8668132
这篇文章主要介绍一下linux下面的文件搜索实现:
Filesearch.h
//
// Filesearch.h
// //
// Created by mac mac on 13-4-28.
// Copyright (c) 2013年 __MyCompanyName__. All rights reserved.
// #ifndef _Filesearch_h
#define _Filesearch_h //#include <stdio.h>
//#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <pwd.h>
#include <unistd.h>
//#include <string.h>
#include <time.h>
#include "mac.h"
#include "Socket.h" //#define MAX_PATH 255 int IsDir(char *name); void Search_File(char *path,char *name); //int search_flag = 0; /*
int main(int argc , char *argv[])
{
static char *current_dir;
static char *file_name;
int length; if(argc==1)
{
printf("it takes more parameter!!!n"); } if(argc==2)
{
current_dir = (char *)getcwd(current_dir,MAX_PATH);
} if(argc==3)
{
length = strlen(argv[1]); if(length>1 && (argv[1][length-1]=='/'))
{
argv[1][length-1]=='�'; }
current_dir = argv[1];
file_name = argv[2];
} Search_File(current_dir,file_name); printf("Hello world!n");
return 0;
} */ #endif
Filesearch.cpp:
//
// Filesearch.cpp
// mac_client
//
// Created by mac mac on 13-5-21.
// Copyright (c) 2013年 __MyCompanyName__. All rights reserved.
//
#include <stdio.h>
#include <iostream>
#include "Filesearch.h" int search_flag = 0; int IsDir(char *name)
{
struct stat buff; if(lstat(name,&buff)<0)
return 0; return S_ISDIR(buff.st_mode); } //调用的时候直接使用'/'目录作为搜索路径,相当于搜索全盘了。 void Search_File(char *path,char *name)
{
DIR *directory;
struct dirent *dir_entry;
char buffer[MAX_PATH]; if((directory = opendir(path)) == NULL)
{
fprintf(stderr,"%s",path);
printf(path);
perror(" ");
return;
} while(dir_entry == readdir(directory))
{
if(!strcmp(dir_entry->d_name,".")||!strcmp(dir_entry->d_name,".."))
{
//do nothing
}
else
{
if((strcmp(path,"/")) == 0)
{
sprintf(buffer,"%s%s",path,dir_entry->d_name);
// printf(buffer);
/* if is not boot directory do not add "/"*/ }
else
{
sprintf(buffer,"%s/%s",path,dir_entry->d_name);
printf(buffer);
printf("\n");
} if(IsDir(buffer))
{
Search_File(buffer,name);
}
else
{
//find the file,if exist
if(strcmp(dir_entry->d_name,name)==0)
{
printf("%sn",buffer);
search_flag=1; }
}
} } closedir(directory); } void setOutFiles(const char * path)//得到指定目录下面所有文件, 传输的时候还得改
{
DIR *dp;
struct dirent *dirp;
char fullpath[MAX_PATH] = {0};
if((dp = opendir(path)) == NULL)
{
//err_quit();
return ;
} if (strcmp(path,"/") == 0) //如果是根目录,要处理一下
{
while((dirp = readdir(dp))!= NULL)
{ sprintf(fullpath,"%s%s", path,dirp->d_name);
printf("%s\n",fullpath); } }
else
{ while((dirp = readdir(dp))!= NULL)
{ sprintf(fullpath,"%s/%s", path,dirp->d_name);
printf("%s\n",fullpath); }
} }
搭建传输的socket平台参考下面博文:
http://blog.csdn.net/wangyaninglm/article/details/41940287
windows linux—unix 跨平台通信集成控制系统----文件搜索的更多相关文章
- windows linux—unix 跨平台通信集成控制系统----系统硬件信息获取
控制集成系统需要了解系统的各项硬件信息,之前我们设计的时候,习惯使用c函数来搞,后来可能发现程序的移植性收到了一些影响,比如unix内核的一些c函数在linux下面是没有的: 比如 苹果达尔文内核的如 ...
- windows linux—unix 跨平台通信集成控制系统
首先,我们可以用到这个开源的开发包: mdk(Micro-Development-Kit)微量级软件开发包,提供几个常用类,主要实现了一个高性能的并发服务器引擎 使用c++开发,是一个跨平台的开发包, ...
- Linux系类(8) - 文件搜索命令locate
文件搜索命令locate 命令格式 locate [文件名] 在后台数据库中按文件名搜索,搜索速度更快,而find.which是遍历所有目录去查找:后台数据库在/var/lib/mlocate (保存 ...
- Linux/Unix 多线程通信
线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用. 不过要注意的是线程间需要做好同步,一般用 mutex. 可以参考一些比较新的 UNIX/Linux ...
- Windows/Linux 生成iOS证书及p12文件
操作步骤 生成csr文件(通过OpenSSL命令) 生成mobileprovision文件(通过Apple开发者后台) 生成cer文件(通过Apple开发者后台) 生成P12文件(通过OpenSSL命 ...
- Android开发环境搭建 for windows (linux类似) 详细可参考“文件”中“Android开发环境搭建.pdf ”
ADT-Bundle for Windows 是由Google Android官方提供的集成式IDE,已经包含了Eclipse,你无需再去下载Eclipse,并且里面已集成了插件,它解决了大部分新手通 ...
- Qt 条件编译 arm windows linux 判断 跨平台
如果代码里面有些判断需要不同的参数做判断: 办法:在pro文件里面做定义 方法1:直接定义一个宏:用的时候可以直接判断,这样做不好的地方是编译前需要重新切换一下宏 1)定义宏 DEFINES += _ ...
- Linux学习笔记(8)文件搜索与帮助
帮助: (1) man ls (2) info ls (3) whatis ls (4) help 搜索: (1) which ls :查看ls命令所在绝对路径 (2) locate user ...
- 转:一个跨WINDOWS LINUX平台的线程类
来源:http://blog.csdn.net/dengxu11/article/details/7232681 继Windows下实现一个CThread封装类之后,这里我再实现一个跨WINDOWS ...
随机推荐
- Python 函数参数*expression 之后为什么只能跟关键字参数
python 为何要设计这种? 正确: def f(a=2,b=2,c=3): return a+b+c print(f(*(1,1),c=1)) 错误: def f(a=2,b=2,c=3): re ...
- Windows Python requests 详细模块安装方法
据说requests是一个很吊的处理网络问题的第三方库.我折腾了半天.终于在Win上安装好了. 网上找到的都不详细,我是反复尝试才成功的. 还是自己写一个傻瓜式的指南吧: 1.安装 Setuptool ...
- java创建线程
创建一个线程 Java提供了两种创建线程方法: 通过实现Runable接口: http://blog.csdn.net/duruiqi_fx/article/details/52187275 通过继承 ...
- mysql进阶(二十八)MySQL GRANT REVOKE用法
mysql进阶(二十八)MySQL GRANT REVOKE用法 MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器: 授权->确定用户是否拥有足够的权限执 ...
- 开源IMDG之GridGain
作为另一款主流的开源数据网格产品,GridGain是Hazelcast的强有力竞争者.同样提供了社区版和商业版,近日GridGain的开源版本已经进入Apache孵化器项目Ignite(一款开源的内存 ...
- Vibrator控制手机震动
Vibrator控制手机震动 效果图 源码 下载地址(Android Studio工程):http://download.csdn.net/detail/q4878802/9049755 添加权限 & ...
- socket系列之socket服务端与客户端如何通信
上面已经分别介绍了ServerSocket跟Socket的工作步骤,并且从应用层往系统底层剖析其运作原理,我们清楚了他们各自的一块,现在我们将把他们结合起来,看看他们是如何通信的,并详细讨论一下他们之 ...
- Android JavascriptBridge 详解(二)
原文出自:http://blog.csdn.net/sk719887916/article/details/47189607 Android开发目前现状来说,开发者大部分时间花在UI的屏幕适配上,使用 ...
- 1.3、Android Studio创建一个Android Library
一个Android Library结构上与Android app模块相同.它可以包含构建一个app需要的所有东西,包括圆满,资源文件和AndroidManifest.xml.然而,并非编译成运行在设备 ...
- 【Android应用开发】Android Studio - MAC 版 - 快捷键详解
博客地址 : http://blog.csdn.net/shulianghan/article/details/47321177 作者 : 韩曙亮 要点总结 : -- 熟练使用快捷键 : 在任何编程环 ...