Какие виды "маячков" бывают?
Вот раньше я даже себе представить не мог, что Искусственный Интеллект будет мне программы писать!
Время идёт, ИИ пишет, а задачки практически те же: https://foren.germany.ru/programmer/f/39124479.html
batch это для виндовс, допустим файлы огромные и не видно работает моя программка или уже "зависла"...
Как это отслеживать, какие маячки бывают? На ум приходит только: "каждые 10тыщ в отдельный файл строку"

непонятен вопрос
Я же говорю, не хочу возиться с компиляциями С++, Сшарпа и тому подобное, для питона нужен ноутбук.
ЯваСкрипт - не умеет писать текстовые файлы. А вот batch (файл .бат) тыкнул и всё работает...
Теперь вопрос такой, если ФАЙЛ с ТЕКСТОМ, который я обрабатываю настолько большой, (гигабайты),
что не вижу работает программка или уже зависла, можно прерывать, дробить на более мелкие файлы.
Можно например по вентилятору компьютера слушать, если усиленно жужжит, значит ещё работает..

А вот batch (файл .бат) тыкнул и всё работает
никогда не писал проги в таком виде - это чистое садомазо
ФАЙЛ с ТЕКСТОМ, который я обрабатываю настолько большой, (гигабайты),
Можно делать вывод на консоль через определенное количество строк, просто ".", а если выводить символ "в начало строки", то можно и прогресс бар консольный сделать
Спроси своего ИИ, как сделать оповещение о прогрессе работы программы на своём языке.
Для консоли уже подсказали. Если файл пакетами читаешь (чтобы сразу весь в память не грузить, если он действительно несколько гигабайт занимает), то на каждый пакет можешь в консоль что-то вывести.
Про пакетное чтение файлов тоже можешь ИИ спросить. Он ядрёный, он смогёт.
Редактор и командная строка
Каждый работает, как ему удобней... вот ты пришёл из мира Линукса, тебе удобней командная строка.
МНЕ командная строка НЕ НУЖНА, я хочу просто два клика по файлу, рядом появляется другой файл.
Пример задачки, (я сижу на виндовс). Я закидываю в ппапку с сотнями файлов маленький .бат, два клика
у меня появляется текстовой файл - со списком названий всех файлов и папок в этой папке. Понятно?
Никаких эксешников .ЕХЕ, никаких командных строк или сред обработки типа питон юпитер ноутбук или Ноде.йс
если других вариантов нет, значит будем делать так, кроме входяшего и выходяшего файла, будет третий файл,
где за каждую десять тысяч обработанных строк будет появляться запись, если записи не появляются значит зависла.

Зачем? Там же просто строки дописывает, файл скопировать, в другом месте посмотреть.
Программулька.бат
Вход.тхт
Выход.тхт
Строки-прогресса.тхт
по идее выход растёт, строки-прогресса растут, даже открывать не надо, просто мушкой навёл, свойства посмотрел...

вот ты пришёл из мира Линукса, тебе удобней командная строка
Нет я сижу на винде и мне удобнее UI
Но вы путаете среду выполнения со средой разработки.
Батник вы же не создаёте мышкой ну и надеюсь отладку не кликами делаете. Запуск проги на питоне можно делать также через батник, так что не изменится ничего
Для питона не нужна никакая IDE, хотя с ней гораздо удобнее, откройте для себя https://code.visualstudio.com/
Может кто в анализе навести на мысль ?
SectionBuffer pmt_buf;
for (const auto& pkt2 : packets) {
if (pkt2.size() != 188) continue;
uint16_t pid2 = ((pkt2[1] & 0x1F) << 8) | pkt2[2];
if (pid2 != pmt_pid) continue;
std::cout << "DEBUG: PMT candidate PID found: " << pid2 << std::endl;
bool unit_start2 = pkt2[1] & 0x40;
int pointer_field2 = pkt2[4];
int payload_offset2 = 4 + (unit_start2 ? 1 + pointer_field2 : 0);
if (payload_offset2 >= 188) continue;
pmt_buf.push(&pkt2[payload_offset2], 188 - payload_offset2, unit_start2);
std::cout << "DEBUG: PMT buffer size: " << pmt_buf.data.size() << std::endl;
if (pmt_buf.complete) {
std::cout << "DEBUG: PMT section COLLECTED!" << std::endl;
int expected_len2
= pmt_buf.expected_len;
if (pmt_buf.data.size() < expected_len2) break;
uint8_t version = (pmt_buf.data[5] >> 1) & 0x1F;
std::cout << "INFO: PMT pnr:" << pnr << " version:" << int(version) << std::endl;
int section_len2 = ((pmt_buf.data[1] & 0x0F) << 8) | pmt_buf.data[2];
int pcr_pid = ((pmt_buf.data[8] & 0x1F) << 8) | pmt_buf.data[9];
std::cout << "INFO: PCR pid:" << pcr_pid << std::endl;
int prog_info_len = ((pmt_buf.data[10] & 0x0F) << 8) | pmt_buf.data[11];
int idx = 12 + prog_info_len;
int section_len = ((pmt_buf.data[1] & 0x0F) << 8) | pmt_buf.data[2];
while (idx < section_len - 1 - 4) {
uint8_t stream_type = pmt_buf.data[idx];
uint16_t elem_pid = ((pmt_buf.data[idx + 1] & 0x1F) << 8)
| pmt_buf.data[idx + 2];
// VIDEO
if (stream_type == 0x1B) {
std::cout << "INFO: VIDEO pid:" << elem_pid << " type:0x" << std::hex << int(stream_type) << std::dec << std::endl;
}
// AUDIO
else if (stream_type == 0x03 || stream_type == 0x04 || stream_type == 0x0F || stream_type == 0x81) {
std::cout << "INFO: AUDIO pid:" << elem_pid << " type:0x" << std::hex << int(stream_type) << std::dec << std::endl;
}
// TTX
else if (stream_type == 0x06) {
std::cout << "INFO: TTX pid:" << elem_pid << " type:0x" << std::hex << int(stream_type) << std::dec << std::endl;
}
// Другие PID
else {
std::cout << "INFO:
PID:" << elem_pid << " type:0x" << std::hex << int(stream_type) << std::dec << std::endl;
}
// Descriptors
int es_desc_len = ((pmt_buf.data[idx + 3] & 0x0F) << 8) | pmt_buf.data[idx + 4];
int d = idx + 5;
while (d + 2 < idx + 5 + es_desc_len && d + 1 < int(pmt_buf.data.size())) {
uint8_t tag = pmt_buf.data[d];
uint8_t len = pmt_buf.data[d + 1];
if (tag == 0x0A && len >= 3) {
std::string lang(reinterpret_cast<const char*>(&pmt_buf.data[d+2]), 3);
std::cout << "INFO: AUDIO lang:" << lang << std::endl;
}
d += 2 + len;
}
idx += 5 + es_desc_len;
}
break;
}
}
}
}
ну хоть бы проблему описали а то даже и помощник не знает что сказать.
Этот фрагмент кода анализирует пакеты MPEG-TS (Transport Stream) для извлечения и анализа раздела PMT (Program Map Table). Это делается путем сбора пакетов PMT из вектора пакетов, сборки секции и извлечения деталей, таких как типы видео/аудио потоков, PID и язык.
В логике нет ничего ужасного, но стоит обратить внимание на несколько тонких моментов и потенциальных подводных камней.
Код успешно фильтрует пакеты TS, восстанавливает секцию PMT и извлекает информацию о потоке и дескрипторе. Логика разбора выглядит нормальной, а отладочные сообщения могут быть полезны.