最近迷茫了许多,唉,把这几天CSDN出问题没有贴上去的博客都贴上来吧.主要是一个搜索,可以看作是一个上次小搜索的翻版吧。

#include  < windows.h >
#include  < stdio.h >
#include  < stdlib.h >
#include  < process.h >
#include  < stddef.h >

#define  MAX_THREADS 3

DWORD WINAPI ThreadPro(LPVOID);

HANDLE hThreadLimitSemaphore;
char  szSearchFor[ 1024 ];


int  main( int  argc,  char   * argv[]) 
... {    
    WIN32_FIND_DATA *lpFindData;
    HANDLE hFindFile;
    HANDLE hThread;
    DWORD dummy;
    int i;

    if (argc!=2)
    ...{
        printf("Usage: %s <search_string> ",argv[0]);
        return 0;
    }

    strcpy(szSearchFor,argv[1]);      //搜索内容 这里是搜索后缀名为*.c 的源文件中是否有搜索字段

    lpFindData=calloc(1,sizeof(WIN32_FIND_DATA));

    hThreadLimitSemaphore=CreateSemaphore(NULL,MAX_THREADS,MAX_THREADS,NULL);        //这里Semaphore最大为3

    hFindFile=FindFirstFile("*.c",lpFindData);                                      //搜索当前目录下后缀名为.c 的文件

    if (hFindFile==INVALID_HANDLE_VALUE)
    ...{
        return -1;
    }

    do 
    ...{
        WaitForSingleObject(hThreadLimitSemaphore,INFINITE);                       //等待Semaphore的激活 也就是可以又开辟线程了
        hThread=(HANDLE)_beginthreadex(NULL,0,ThreadPro,lpFindData,0,&dummy);

        CloseHandle(hThread);                            //这里只是把句柄关闭了,对线程没有影响,只是没有办法对它进行调用 

        lpFindData=calloc(1,sizeof(WIN32_FIND_DATA));   //这里又申请了一部分空间,主要是为下一次循环申请空间,注意这里lpFindData空间其实是在副线程被释放的
                                                        //同时开三个线程 是对不同的lpFindData操作的
    } while(FindNextFile(hFindFile,lpFindData));

    CloseHandle(hFindFile);

    for (i=0;i<MAX_THREADS;i++)
    ...{
        WaitForSingleObject(hThreadLimitSemaphore,INFINITE);    //等待所有进程结束,注意前面不是CloseHandle(hThread),失去了对线程直接控制
    }
    CloseHandle(hThreadLimitSemaphore);

    return 0;
}

DWORD _stdcall ThreadPro( void   * arg)
... {
    WIN32_FIND_DATA *lpFindData=(WIN32_FIND_DATA *)arg;
    char buf[1024];
    FILE *fp;

    fp=fopen(lpFindData->cFileName,"r");
    if(!fp) return -1;
    while (fgets(buf,sizeof(buf),fp))
    ...{
        if (strstr(buf,szSearchFor))
        ...{
            printf("%s:  %s ",lpFindData->cFileName,buf);
        }
    }
    fclose(fp);
    free(lpFindData);

    ReleaseSemaphore(hThreadLimitSemaphore,1,NULL);

    return 0;
}

搜索包含关键字的文本相关推荐

  1. linux shell之替换目录下包含关键字所有文本里面的内容

    1 问题 替换目录下包含关键字所有文本里面的内容 比如在目录 /root/chenyu/cy/下,把包含文本/A/B C替换成文本E=F 2 解决办法 命令如下 grep -Rl /A/B\ C /r ...

  2. 查找计算机里包含相关文字,windows7如何搜索包含关键字的文件_win7电脑文件怎么查关键字文件...

    在使用windows7系统的过程中,许多用户都会进行创建一些新的文件,可是由于保存的文件过多,导致存放的文件路径总是会记不住,等到用户想要找文件时总是不知道按照什么方式来找,这时就可以通过搜索包含关键 ...

  3. BeautifulSoup4 find_all搜索包含指定文本内容的标签返回空list的问题

    最近帮助公司其他团队用python写了一个爬虫,遇到了不少问题,其中就有一个问题是使用BeautifulSoup4的find_all搜索包含指定文本内容时返回的是空的list,查看了官方文档也上goo ...

  4. 编写文件搜索小程序:1. 输入绝对路径以及搜索关键字,2. 搜索指定路径下(包括子文件夹)中名称包含关键字的所有文件并打印出,3. 将当前操作记录日志

    package com.homework;import java.io.File; import java.io.FileOutputStream; import java.io.IOExceptio ...

  5. 在搜索框自动输入文本_Selenium 时间搜索框查询和日期大小比较

    在做Selenium自动化的时候,会遇到时间搜索框查询(如下图)并比较查询结果是否在输入的时间之类的问题. 要想解决这个问题,首先,第一步要做的就是选择时间,并获取到所选时间的文本信息. 如上图所示, ...

  6. linux 删除含有关键词的文件_linux下查找包含关键字的文件

    在linux下如果要查找包含某个关键字的文件,如要在nagios目录下搜索带有关键字"store-rd-sys"的文件,在终端下运行命令: /usr/local/nagios/et ...

  7. 在搜索框自动输入文本_【Zotero文档翻译】管理篇:搜索

    本文翻译自Zotero文档:https://www.zotero.org/support/searching 快速搜索 快速搜索能够让您快速在库中或分类中找到所需条目. 运行快速搜索 快速搜索的操作十 ...

  8. 初学搜索之关键字选择

    初学搜索之关键字选择 --------序言------------ 搜索引擎影响我们的生活已经许多年,它在我们需要下载某些资源.查看新闻.找到特定网站等时能够帮助我们及时快速地找到相关网页.但是如果仅 ...

  9. IDEA查询包含关键字的文本文件

    ctrl+shift+F,可以整个项目搜索关键字查询包含关键字的文件,或者Edit->Find->Find in path. 注意:使用快捷键搜索的时候关闭搜狗输入法后再去使用,否则不会弹 ...

最新文章

  1. 【推导】计蒜客17119 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function
  2. 为什么request的页面与原页面不同_如何在不同页面上使用不同的Joomla CSS
  3. Vue 组件中 移动 this.$el 的注意事项
  4. MyBatis入门和全局配置文件介绍
  5. PLSQL_基础系列11_递归和层次查询CONNECT BY(案例)
  6. 钢铁厂来了“新员工”破解废钢定级行业难题
  7. golang调用matlab,Golang中Proto编写和生成
  8. poj 1279 Art Gallery - 求多边形核的面积
  9. 累计增量备份策略_SAN存储做定时/实时备份的介绍
  10. Linux的内核性能参数的调整
  11. 两种土壤类型数据的简介、下载教程
  12. 三星note9刷Android9,【极光ROM】-【三星NOTE9 N960X-9810】-【V21.0 Android-Q-THB】
  13. 单片机c语言论文参考文献,单片机应用程序论文,关于关于单片机应用编程的技巧相关参考文献资料-免费论文范文...
  14. 离散Hopfield神经网络的联想记忆—数字识别
  15. pip 安装小白教程
  16. 线性表的链式存储结构
  17. python大数据书籍推荐-清华大学出版社-图书详情-《从零开始学Python大数据与量化交易》...
  18. 【.Net Core】编译时禁止自动生成netcoreapp文件夹
  19. 【Springboot整合ShardingSphere(ShardingJDBC)】扫盲文(并非代码实战)
  20. r语言变量长度不一致怎么办_R语言实现数据离散化方法总结

热门文章

  1. 安装ngrok和voila(windows系统)
  2. VC LP的使用方法
  3. cmd 文本文件分割,如何在Windows中分割大文本文件?
  4. 【shell脚本练习】grep sed awk
  5. 年仅19岁!西班牙最危险黑客被捕
  6. carsim中质心加速度_carsim输入、输出常用变量
  7. pytorch:交叉熵(cross entropy)
  8. FFMPEG录制以及推流
  9. 什么是“撞库”?有哪些危害?
  10. 图象滤波器 Coherence-enhance shock filter 实现