Добрый всем.
Есть задачка, опрашивать датчик через определенный интервал времени (время опроса датчика не должно прерываться). После заполнения файла temp.txt он копируется по сети (далее создается новый файл temp.txt) и так по кругу.
Для реализации задачи я в программе запустил 2 потока, первый делает опрос, второй копирует данные.
Функция копирования файла для 2-го потока.
void CopyNetFile(std::string path) {
DIR *dir;
char dirbuffer[150];
const char * test_path = path.c_str();
strcpy(dirbuffer, test_path);
dir = opendir(dirbuffer);
if ( dir == NULL ) {
printf("Каталог не доступен (копируй локально\n");
}else{
printf("DIR YES\n");
std::string nametime = ""+path+"file.txt";
std::string nametemp = "temp.txt";
const char* p_c_nametemp = nametemp.c_str();
const char* p_c_nametime = nametime.c_str();
std::ifstream in(p_c_nametemp); // open original file
std::ofstream out(p_c_nametime); // open target file
out << in.rdbuf(); // read original file into target
out.close(); // explicit close, unnecessary in this case
in.close();// explicit close, unnecessary in this case
unlink (p_c_nametemp);//удаляем файл
}
}
#include <thread>
int main(int argc,char *argv[]) {
while (1){
опрос датчика...
if (пришло время копировать) {
//Запускаем в отдельном потоке функцию
std::thread copy_thread(CopyNetFile,path);
//Не дожидаемся выполнения функции продолжаем работу основного потока.
copy_thread.detach();
}
}
}
С потоками работаю первый раз, не знаю как проверить есть остановка основного потока или нет.