История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
#include <stdio.h>
#include <stdbool.h>
#include <signal.h>
#include <unistd.h>
#include <assert.h>
FILE * logfile = NULL;
void sigusr1_handler(int s)
{
printf("Переоткрой\n");
printf("Дескриптор\n");
printf("Лога\n");
printf("ЩАААААААААААААААААААААА\n");
if(logfile)
{
int descriptor = fileno(logfile);
fsync(descriptor);
fclose(logfile);
logfile = fopen("log.txt","w");
}
printf("ГААААААААААААААААААААААТОВА\n");
fprintf(logfile,"Перезапуск лога! Ротатион енабле юхуу\n");
}
int main(int argc, char *argv[])
{
signal(SIGUSR1,sigusr1_handler);
printf("%d\n",getpid());
logfile = fopen("log.txt","w");
assert(logfile);
int c = 0;
int descriptor = fileno(logfile);
while(true)
{
sleep(1);
fprintf(logfile,"привет я логовая записулька № %d!\n",c++);
fflush(logfile);
printf("%d\n",c);
}
return 0;
}
kill -s SIGUSR1 `pidof a.out`
Не ломается, как сломать то? :( Или я чего не понял опять? :)
Исходная версия LINUX-ORG-RU, :
FILE * logfile = NULL;
void sigusr1_handler(int s)
{
printf("Переоткрой\n");
printf("Дескриптор\n");
printf("Лога\n");
printf("ЩАААААААААААААААААААААА\n");
if(logfile)
{
int descriptor = fileno(logfile);
fsync(descriptor);
fclose(logfile);
logfile = fopen("log.txt","w");
}
printf("ГААААААААААААААААААААААТОВА\n");
fprintf(logfile,"Перезапуск лога! Ротатион енабле юхуу\n");
}
int main(int argc, char *argv[])
{
signal(SIGUSR1,sigusr1_handler);
printf("%d\n",getpid());
logfile = fopen("log.txt","w");
assert(logfile);
int c = 0;
while(true)
{
sleep(1);
fprintf(logfile,"привет я логовая записулька № %d!\n",c++);
fflush(logfile);
printf("%d\n",c);
}
return 0;
}
kill -s SIGUSR1 `pidof a.out`
Не ломается, как сломать то? :( Или я чего не понял опять? :)