子を開始するプログラム(r.out
)があり、その子に時間制限があります。タイムアウト後に完了していない場合、子プロセスを停止する方法
期限を過ぎてからr.out
の実行を停止する方法を知りたいと思います。
私はLinux上でコードを実行しています。
これは私がこれまで持っているものです。
#include <unistd.h>
#include <signal.h>
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#define TIME_LIMIT 1 //determine time limit
void my_function(); //supposed to include the submitted code
void alarm_handler(int);
int main()
{
if (sigaction(SIGALRM, NULL, NULL) == -1)
err(1, NULL);
signal(SIGALRM, alarm_handler); // assigning an alarm handler for SIGALRM
alarm(TIME_LIMIT); // install an alarm to be fired after TIME_LIMIT
system("./r.out"); //Running the file
alarm(0);
return 0;
}
void alarm_handler(int sig)
{
printf("%s" , "Time limit exceeded");
//Here i want a code to stop the r.out file
}
コードレビューサービスはありません。 – Olaf
スレッドを使用できますか?もしそうなら、 'r.out'をスレッドで実行させ、' n'秒後にスレッドを終了させることができます。 –
それに 'SIGKILL'を送ります。しかし、' fork/exec'を使ってより多くの制御をする方が良いでしょう。 –