跨平台的网络通信,跟设备的集成控制,牵扯到在各种平台下的文件搜索问题,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. Leetcode解题-链表(2.2.6)RotateList

    1 题目:Rotate List Given a list, rotate the list to the right by k places, where k is non-negative. Fo ...

  2. Spark UI界面原理

    当Spark程序在运行时,会提供一个Web页面查看Application运行状态信息.是否开启UI界面由参数spark.ui.enabled(默认为true)来确定.下面列出Spark UI一些相关配 ...

  3. x264源代码简单分析:宏块分析(Analysis)部分-帧间宏块(Inter)

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  4. Android播放在线音乐文件

    Android播放在线音频文件 效果图: 源码下载地址: http://download.csdn.net/detail/q4878802/9020687 添加网络权限: <uses-permi ...

  5. 【Netty源码分析】数据读取过程

    首先客户端连接到服务端时服务端会开启一个线程,不断的监听客户端的操作.

  6. Android View的绘制过程

    首先是view的绘制过程~最主要的分三部分 measure layout draw 看字面意思,计算,布局,画~ android中控件相当于是画在一个无限大的画布上的,那就产生了几个问题 画布无限大, ...

  7. [java面试]逻辑推理6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?java实现

    题目: 6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少? 10 = 6 + 4         4 18 = 10 + 8        4 + 4  32 = 18 + 14 ...

  8. Android初级教程图片信息

    对图片常规信息要了解其性质.图片大小.像素.位图等等概念总结如下: 图片在计算机中的大小 图片的总大小 = 图片的总像素 * 每个像素占用的大小(图片的总像素=像素尺寸也就是分辨率,例如设定800*4 ...

  9. Android的事件处理-android学习之旅(四十四)

    androd事件处理简介 控制飞机移动的简单实例 package peng.liu.test; import android.app.ActionBar; import android.app.Act ...

  10. pig简单的代码实例:报表统计行业中的点击和曝光量

    注意:pig中用run或者exec 运行脚本.除了cd和ls,其他命令不用.在本代码中用rm和mv命令做例子,容易出错. 另外,pig只有在store或dump时候才会真正加载数据,否则,只是加载代码 ...