91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

用c++實現了多進程對文件的分塊讀取,并把讀取的內容通過c++庫函數對LINUX下的命令進行了系統調用

資源截圖

代碼片段和文件信息

//?yc.cpp?:利用多進程對文件的分塊讀取,并進行系統調用,只需這一個app和yc.h文件?
//@version:0.9
//@author:yc
//@time:25/07/13


#include?
#include?
#include?
#include??
#include?????//這個頭文件一定要加
#include???
#include???
#include?

#include?
#include?
#include??
#include?
using?namespace?std;
/**
*int轉為string型
*/
string?int_to_string(int?num){
??ostringstream?oss;
??string?c?=?““;
??oss?<??c?=oss.str();
??return?c;
}

/**
@line_size:每1行有多少字母
@line:要讀多少行
@count_thread:第幾個進程
*/
int?get_line_size(int?line_sizeint?lineint?count_thread){
if(count_thread?==?0){
return?0;
}else{
return?(line_size?+?1)?*?(line?*?count_thread?-?1)?;
}
}

/*
對每行讀取的記錄進行系統調用,來統計該記錄在文件中出現的行號參數內容參見test方法
*/
void?test_grep(const?char*?in_fileconst?char*?out_filestring?filenameint?thread_numint?line_sizeint?read_line_numint?is_end){
fstream?fout;
fout.open(out_fileios::out);

ifstream?fin;
fin.open(in_fileios::in);
int?count_read?=0;
fin.seekg(get_line_size(line_sizeread_line_numthread_num)std::ios::cur);?//19739665行是讀取的19739667行,77是一行76個再加1
while(!fin.eof()){
count_read++;
string?str_temp?=?““;
getline(finstr_temp);
char?tmp[1000];
if(is_end?==?0?&&?count_read?>?read_line_num){
break;????//用于不是最后一塊文件的跳出
}else?if(str_temp.size()?<=?2){
break; ?//用于最后1快文件的跳出
}else{
fout< string?sql?=?“grep?-n?\““+str_temp+“\“?“+filename;
cout< FILE?*fp?=?popen(sql.c_str()?“r“);???//通過popen函數來實現系統調用,返回1個字符數組,保存的系統調用的命令的結果
??? while?(fscanf(fp?“%s“?tmp)?!=?EOF){
for(int?i?=?0;i? if(tmp[i]?!=?‘:‘)fout< else{
fout< break;
}
}
}
???????? //puts(tmp);
//fout<??? pclose(fp);
}
}

}

/*
多進程分塊讀取每行固定長

評論

共有 條評論