LINUX.ORG.RU

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

Исправление metawishmaster, (текущая версия) :

ну и вот еще - я забыл проверить входные параметры, поэтому после

N = atoi(argv[2]);                                                              
M = atoi(argv[3]);

(до fork'a) вставь
if (M < 0 || N < 0) {                                                           
    printf("error: incorrect arguments\n");                                     
    close(f_in);                                                                
    return 1;                                                                   
}                                                                               
                                                                                    
if (M == 0) {                                                                   
    while (read(f_in, &inp, 1) == 1)                                            
        write(1, &inp, 1);
    close(f_in);                                                  
    return 0;                                                                   
}

кроме того, в коне функции sigper
lseek(f_in, 0, SEEK_SET);

ни на что не влияет, можно удалить дабы не было лишних вопросов

Исправление metawishmaster, :

ну и вот еще - я забыл проверить входные параметры, поэтому после

N = atoi(argv[2]);                                                              
M = atoi(argv[3]);

(до fork'a) вставь
if (M < 0 || N < 0) {                                                           
    printf("error: incorrect arguments\n");                                     
    close(f_in);                                                                
    return 1;                                                                   
}                                                                               
                                                                                    
if (M == 0) {                                                                   
    while (read(f_in, &inp, 1) == 1)                                            
        write(1, &inp, 1);
    close(f_in);                                                  
    return 0;                                                                   
}

Исходная версия metawishmaster, :

ну и вот еще - я забыл проверить входные параметры, поэтому после

N = atoi(argv[2]);                                                              
M = atoi(argv[3]);

(до fork'a) вставь
if (M < 0 || N < 0) {                                                           
    printf("error: incorrect arguments\n");                                     
    close(f_in);                                                                
    return 0;                                                                   
}                                                                               
                                                                                    
if (M == 0) {                                                                   
    while (read(f_in, &inp, 1) == 1)                                            
        write(1, &inp, 1);
    close(f_in);                                                  
    return 0;                                                                   
}