freadを使用して大きなファイルを読み込んでいます。私がCtrl + Cを使ってプログラムを中断すると、プログラムはハングアップし、kill -9ではなくkillableではありません。 100%のCPUを使って簡単にスティックし、すでに割り当てられていたRAMを維持します。それを解決することは素晴らしいことですが、外部からそのアプリケーションを強制終了できることも大丈夫です(主な問題は、自分でそのマシンを再起動できないという事実です)。 Unixでこれを行う方法はありますか?SIGINTを送信するときに、fread()の間にUNIXアプリケーションがハングする
ありがとうございます!ここで
はソースです:
int Read_New_Format(const char* prefix,const char* folder)
{
char filename[500];
long count_pos;
//open files for reading.
sprintf(filename,"%s/%s.pos.mnc++",folder,prefix);
FILE *pos = fopen(filename,"r");
if(pos==NULL)
{
printf("Could not open pos file %s\n",filename);
}
//read the number count of entries in each of the three files.
fread(&count_pos,sizeof(long),1,pos);
printf("[...]");
//read the complete file into an array.
float *data_pos = new float[3*count_pos];
fread(data_pos,3*sizeof(float),*count_pos,pos);
printf("Read files.\n");
[...]
}
あなたは本当に* UNIX *やOSのようないくつかのUNIXについて話していますか?ほとんどのUNIXのようなOSでは、-9を指定しても、特定のシステムコールで打たれたプロセスを強制終了することはできません。 – PlasmaHH
申し訳ありません、それはSUSEです... – rugermini
あなたはソースコードを投稿できますか?通常、シグナルはシステムコールを中断します。 –