LINUX.ORG.RU

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

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

через alarm() и обработку sig_alarm. Примерно так:

int flag;
void sig_alarm( int ) {
   flag = 0;
}

int fileTransferRecv(int sock) {
  flag = 1;
  signal( SIGALRM, sig_alarm );
  alarm( 1 );
  while( flag )
 {
   ...
   fwrite();
   alarm( 1 );
 }
alarm( 0 );
}

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

через alarm() и обработку sig_alarm. Примерно так:

int flag;
void sig_alarm( int ) {
   flag = 0;
}

int fileTransferRecv(int sock) {
  flag = 1;
  signal( SIGALRM, sig_alarm );
  alarm( 1 );
  while( flag )
 {
   ...
   fwrite();
   alarm( 1 );
 }
alarm( 0 );
}

В обработчике sig_alarm() сбросить flag

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

через alarm() и обработку sig_alarm. Примерно так:

int flag;
void sig_alarm( int ) {
   flag = 0;
}

int fileTransferRecv(int sock) {
  flag = 1;
  signal( SIGALRM, sig_alarm );
  alarm( 1 );
  while( flag )
 {
   ...
   fwrite();
   alarm( 1 );
 }

}

В обработчике sig_alarm() сбросить flag