以下に、HUP を使用して execv を続行する簡単なプログラムを示します。問題は、execv 呼び出しが実行されるときです。その後、HUP が来る場所からコードが続行されます。execv の後、コードは main から終了し、main の最初からやり直す必要があります。
char* a;
char** args;
void hup_func(){
printf("aaaa\n");
if(execv(a,args))
printf("bbb\n");
}
int main(int argc,char* argv[]){
signal(SIGHUP,hup_func);
args=argv;
a=args[0];
printf("%s\n",a);
while(1){
printf("test\n");
sleep(10);
}
return 0;
}
プログラムの名前はdeneme1です。コードの出力は、HUP を送信したときのものです。
./deneme1
test
test
aaa
bbbb
test.
しかし、HUP を送信したときに、メインの開始から開始する必要があります。そのように
./deneme1
test
test
aaa
bbb
./deneme1
test
...
前だった場所ではなく、HUP後のメインの冒頭に戻ってほしい