最近迷茫了许多,唉,把这几天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. 数学家对人工智能的贡献,从牛顿到哥德尔
  2. OO第一单元作业总结
  3. 园林系统优秀党员推荐材料_昆山合纵生态科技有限公司——园林废弃物循环利用“昆山合纵模式”的探索和实践者...
  4. DL之NN/Average_Darkness/SVM:手写数字图片识别(本地数据集50000训练集+数据集加4倍)比较3种算法Average_Darkness、SVM、NN各自的准确率
  5. 根据控件句柄读控件在内存的数据_WPF 2020界面开发新纪元——Accordion控件、图表功能升级...
  6. 【LeetCode】TreeNode类实现解析(java实现)
  7. python获取历史双色球数据_你的梦想,我来买单!Python分析双色球中奖号码竟成功获取特等奖
  8. 利用C++实现哈夫曼算法
  9. 为什么你写的文字没人看,没人赞?
  10. 挂***方法和技巧大汇总
  11. 《HelloGitHub》第 24 期(两周年)
  12. Python爬虫之一:十几行代码下载王者荣耀所有皮肤
  13. 创新移动互联,阿凡题学习神器引领搜索新体验
  14. ANS.1的基础总结
  15. 制药工程专业计算机考试考哪样,制药工程考研可以考什么专业
  16. python+selenium+scrapy框架爬取斗鱼主播相册内的 图片
  17. 腾讯QQ2004II Beta3火爆下载 可自定义头像
  18. Unity关于程序集(Assembly )的那些事
  19. VS2019试用期结束怎么办
  20. “微信之父”张小龙首次演讲实录:详解微信平台四大价值观

热门文章

  1. 无领导小组讨论(一)
  2. 编译搭建ngrok服务实现内网穿透
  3. 7、面向对象编程(基础)
  4. 实现SSR服务端渲染
  5. 丧心病狂,竟有Thread.sleep(0)这种写法?JAVA旭阳lv-5
  6. 《C#网络编程高级篇之网页游戏辅助程序设计(扫描版)》
  7. 谣传“郑州警察被壮汉秒残” 涉事者被拘10日
  8. 中国石油大学《化工原理二》第二阶段在线作业
  9. ava制造业MES生产管理ERP系统
  10. android 百度地图 室内定位,百度地图4.0正式发布:室内定位功能亮相