跨平台的网络通信,跟设备的集成控制,牵扯到在各种平台下的文件搜索问题,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 跨平台通信集成控制系统----文件搜索的更多相关文章

  1. windows linux—unix 跨平台通信集成控制系统----系统硬件信息获取

    控制集成系统需要了解系统的各项硬件信息,之前我们设计的时候,习惯使用c函数来搞,后来可能发现程序的移植性收到了一些影响,比如unix内核的一些c函数在linux下面是没有的: 比如 苹果达尔文内核的如 ...

  2. windows linux—unix 跨平台通信集成控制系统

    首先,我们可以用到这个开源的开发包: mdk(Micro-Development-Kit)微量级软件开发包,提供几个常用类,主要实现了一个高性能的并发服务器引擎 使用c++开发,是一个跨平台的开发包, ...

  3. Linux系类(8) - 文件搜索命令locate

    文件搜索命令locate 命令格式 locate [文件名] 在后台数据库中按文件名搜索,搜索速度更快,而find.which是遍历所有目录去查找:后台数据库在/var/lib/mlocate (保存 ...

  4. Linux/Unix 多线程通信

    线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用. 不过要注意的是线程间需要做好同步,一般用 mutex. 可以参考一些比较新的 UNIX/Linux ...

  5. Windows/Linux 生成iOS证书及p12文件

    操作步骤 生成csr文件(通过OpenSSL命令) 生成mobileprovision文件(通过Apple开发者后台) 生成cer文件(通过Apple开发者后台) 生成P12文件(通过OpenSSL命 ...

  6. Android开发环境搭建 for windows (linux类似) 详细可参考“文件”中“Android开发环境搭建.pdf ”

    ADT-Bundle for Windows 是由Google Android官方提供的集成式IDE,已经包含了Eclipse,你无需再去下载Eclipse,并且里面已集成了插件,它解决了大部分新手通 ...

  7. Qt 条件编译 arm windows linux 判断 跨平台

    如果代码里面有些判断需要不同的参数做判断: 办法:在pro文件里面做定义 方法1:直接定义一个宏:用的时候可以直接判断,这样做不好的地方是编译前需要重新切换一下宏 1)定义宏 DEFINES += _ ...

  8. Linux学习笔记(8)文件搜索与帮助

    帮助: (1) man ls (2) info  ls  (3) whatis ls  (4) help 搜索: (1) which  ls :查看ls命令所在绝对路径 (2) locate user ...

  9. 转:一个跨WINDOWS LINUX平台的线程类

     来源:http://blog.csdn.net/dengxu11/article/details/7232681 继Windows下实现一个CThread封装类之后,这里我再实现一个跨WINDOWS ...

随机推荐

  1. DragVideo,一种在播放视频时,可以任意拖拽的方案

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53638896 前言 项目已开源到 ...

  2. 让sublime总是在新选项卡打开新文件

    sublime的一个默认设置让人很不爽,比如现在选项卡里面已经打开了一个文件A,当你从左边side bar里面点击一个新文件B时,如果你不是快速的双击,且A没有处于编辑未保存状态,那么B就会覆盖A的选 ...

  3. [Python]多个装饰器合并

    django程序,需要写很多api,每个函数都需要几个装饰器,例如 @csrf_exempt @require_POST def foo(request): pass 既然那么多个方法都需要写2个装饰 ...

  4. Markdown-----Markdown使用文档

    最近才接触Markdown,为了快速记忆,整理了这个文档,欢迎补充. Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写 ...

  5. linu下C语言之BMP图片操作编程(中)

    http://blog.csdn.net/morixinguan/article/details/50719472 关于BMP图的介绍之前已经说过了,最近要用到,又要重新开始学习. 现在实现一个让bm ...

  6. JavaScript介绍-javaScript学习之旅(一)

    javaScript简介 1.javaScript是互联网上最流行的脚本语言,这门可用于web和html,更可广泛用于服务器端,pc端,移动端. 2.javaScript脚本语言: javaScrip ...

  7. Dynamics CRM 2015Online Update1 new feature之 通过业务规则清空字段的值

    自2013引入业务规则后很多的功能就不需要通过javascript来实现,业务人员直接通过配置就能解决.那随着版本的更新业务规则的功能也越来越强大,从之前很单纯的逻辑到后面的if..else,相信后面 ...

  8. Sharepoint Solution Gallery Active Solution时激活按钮灰色不可用的解决方法

    在做CRM与sharepoint集成的时候,需要在sharepoint中上传crmlistcomponent组件,上传后需要激活,但会碰到激活按钮是灰色的无法点击的问题,如下图中这样,包括点击组件后面 ...

  9. Zeroc Ice原理介绍

    Ice介绍         Ice(Internet Communications Engine)是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件.Ice是RPC通 ...

  10. iOS中 快速正确的安装 CocoaPods

    有问题或技术交流可以咨询!欢迎加入! 第一部分: CocoaPods 的安装 步骤1 - 安装 RVM RVM 是干什么的这里就不解释了,后面你将会慢慢搞明白. $ curl -L https://g ...