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

 

时间: 2024-09-27 23:42:30

windows linux—unix 跨平台通信集成控制系统----文件搜索的相关文章

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

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

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

首先,我们可以用到这个开源的开发包: mdk(Micro-Development-Kit)微量级软件开发包,提供几个常用类,主要实现了一个高性能的并发服务器引擎    使用c++开发,是一个跨平台的开发包,支持linux32/linux64/win32/win64的类库  .   mdk服务器引擎,提出面向业务的服务器开发模式,根据服务器业务层最关心的3件事,抽象出连接发生(OnConnect),消息到达(OnClose),连接关闭(OnClose)3个接口,让服务器端开发者可以全身心的投入业务

Windows Linux 删除N天之前的文件脚本

                             Windows Linux 删除N天之前的文件脚本    通常做为备份服务器经常会存放非常多的历史文件,而这些文件又并非需要长期而永久的保存,只需保存备份后恢复所需的文件,这个时候就需要定期删除过期而无效的备份文件. Windows 下删除方式如下: forfiles /p d:\OraBackups\prudenwoo /m * /d -7 /c "cmd /c del @file"   forfiles /p d:\OraB

分布式DB2 10.5 for Linux, UNIX和Windows特性的区别

DB2 10.5 产品家族包含 6 个付费版本,一个单独付费的特性和一个免费包.本文的目的是帮助您理解它们之间的区别. 文中还会列出 DB2 10.5 中提供的新功能,比如 BLU Acceleration.DB2 pureScale 增强.SQL 兼容性增强和简化的产品包装. DB2 with BLU Acceleration 结合了高级.创 新的功能,以加速执行数据库和数据仓库的工作负载分析.DB2 with BLU Acceleration 还集成了 IBM Cognos® Busines

PostgreSQL Windows\Linux\FreeBSD的数据文件通用吗

标签 PostgreSQL , Linux , Windows , 数据文件 , 存储格式 背景 PostgreSQL是一个跨平台的数据库,比如支持WindowS, AIX , linux , freebsd等. 同时也支持不同架构例如X86,ARM等. 对于相同架构,不同平台,是否能实现文件级别的平移,甚至物理的流复制搭建STANDBY呢? 理论上从数据库的存储层面来看,如果两个平台存储结构(比如堆表.索引.WAL日志,CLOG等)一致,是可以平移的. 比如Windows,Linux,都是x6

正确授予IBM DB2 10.5 for Linux/UNIX/Windows服务器许可

客户之所以选择 DB2,离不开它难以置信的价值实现速度.它跨不同环境扩展和集成的能力.它的健壮性,以及它对宕机时间(包括计划内和计划外宕机)的最大限度的减少.本文将重点介绍 DB2 的高可用性 (HA) 方面,具体来讲,将从许可角度介绍高可用性. 我们收到了大量有关在高可用性环境中授予 DB2 许可的问题.引起混淆的一个主要来源是,供应商在高可用性环境中针对其数据库产品而采用了具有诸多变化的定价方式. 另一个混淆来源是词汇.例如,IT 行业有时将高可用性环境称为集群.我们已经不再喜欢单独使用这个

有效的在Windows和UNIX/Linux平台上完全卸载DB2

有效的在Windows和UNIX/Linux平台上完全卸载DB2 作者:吴伟龙  Name:Prudence Woo QQ:286507175  msn:happy-wuweilong@hotmail.com       Windows 平台      从 Windows 操作系统中彻底除去 DB2产品时需要执行的步骤.仅当不再需要现有 DB2 实例和数据库时,才应执行此任务.        如果正在卸载 DB2 的缺省副本,并且您有其他的DB2 副本在系统上,则应使用db2swtch命令以在继

为DB2 UDB for Linux, UNIX, and Windows提供Unicode支持的实用方法

简介 当今的应用程序常常设计为供国际化使用.这些应用程序可能需要处理不同语言的字符串 .而 Unicode 正是一种与语言无关的字符表示标准. 由于 Java 编程语言已经在内部使用 Unicode 来表示字符,所以国际化应用程序的开发已经容易多了.但是,不能只考虑应用程序端.后端的 数据库也必须能够处理 Unicode 字符.本文将讨论几个主题,帮助开发人员实现供国际化使用的 DB2 UDB 应用程序. DB2 中支持何种 Unicode 标准? 只有一种 Unicode 标准,但是存在不同的

Windows Linux 删除N天之前文件脚本

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1283082 1. windows删除 删除N天之前的文件脚本:cleardbbak.bat 1 2 forfiles /p E:\db_backup /m * /d -10 /c "cmd /c del @file" forfiles /p E:\db_backup /m * /d -10 /c "c