LINUX.ORG.RU

История изменений

Исправление 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`

Не ломается, как сломать то? :( Или я чего не понял опять? :)