场景,比如需要不同的group消费一个流(kafa),但是重启又希望能继续使用历史节点读取。
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <limits.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <string.h>
#include <sstream>
#include <iostream>
#include <dirent.h>
const int max_process_num = 10;
static const char qbus_head [] = "qbus_group+host";
std::string createGroupId(){
int i = 0;
std::stringstream ss;
std::string fifo_name;
for(;i<max_process_num;i++){
ss<<qbus_head<<i;
fifo_name = ss.str();
if(access(fifo_name.c_str(),F_OK) == -1){
int res = mkfifo(fifo_name.c_str(),0777);
if(res!=0){
printf("Could not create fifo %s\n",fifo_name.c_str());
}else
break;
}
ss.str("");
}
return fifo_name;
}
int main(){
std::string id1 = createGroupId();
std::string id2 = createGroupId();
std::string id3 = createGroupId();
std::string id4 = createGroupId();
printf("id1:%s\n",id1.c_str());
printf("id2:%s\n",id2.c_str());
printf("id3:%s\n",id3.c_str());
printf("id4:%s\n",id4.c_str());
sleep(1);
remove(id1.c_str());//rm -f file
//closedir(id2.c_str());
}