Здравствуйте.
Есть программа на СИ (линукс).
Вот часть функционала в функции маин...
...
for(;;)
{
rat_rub = fopen("/tmp/file.txt", "r");
if(rat_rub == NULL) error_log("rat_rub!");
while(fgets(buff, 255, rat_rub) != NULL)
{
time_creat = strtoul(buff, NULL, 0);
printf("buff: %lu %s\n", time_creat, buff);
if(time_creat > time_res)
{
printf("SEND: %s\n", buff);
SendMessage(namechatid, buff, 1);
//sleep(2);
}
}
if(fclose(rat_rub) == -1) error_log("close rat_rub_func.");
time_res = time_creat;
}
...
Функция SendMessage(namechatid, buff, 1); вызавет функцию, в которой происходит форк, выполняется действие и выход из этой функции - exit(0);
По условиям, функция должна вызваться три раза (из файла читается построчно три строки и каждая строка поочерёдно отправляется в SendMessage).
Вопрос вот в чём: если sleep(2) закомментировано (как в примере), то всё работает нормально. А вот если sleep(2) раскомментировать, то функция SendMessage начинает вызывать большее количество раз, в частности 10 раз.
Как такое может происходить? Как sleep(2) на это влияет?