シグナルハンドラでececl()
を使用してSIGSEGV
を受信したときにプログラムをリセットしようとしています。しかし、私の現在のプログラムでは、execl()
と1つの余分な引数"RESTART"
を介して渡すことができるコマンドライン引数が必要です。C:実行中のプログラムと同じコマンドライン引数でプログラムをexec()するには
しかし、私はargv []をexec()経由で渡すことができますか?
目的: execl("./myprog","./myprog",argv[1],argv[2],...,argv[argc],"RESTART");
OR execl("./myprog","./myprog","RESTART",argv[1],argv[2],...,argv[argc]);
'execv'を見てください。 –
*「SIGSEGVを受け取ったときにプログラムをリセットしようとしています」*正しい理由でこれをやっていることを願っています... – Ryan
アプリケーションを再起動しようとするのは良い考えではありません。代わりに、アプリケーションをラップするスクリプトを作成し、クラッシュしたときにアプリケーションを再起動することができます。または、システムクラッシュ後に再起動するためにsystemdを使用することもできます。 –