2016-04-05 17 views
-1

私は一度に1つの接続でサーバアプリケーションを作成していますが、機能のシンボル名と共有ライブラリの名前を持つTCP要求を受け取ります。スレッドがクラッシュした場合、スレッドやプロセスが改善されます。

私のサーバはdlsymシステムコールを使用して共有ライブラリをロードし、受け取ったシンボル名を使用して関数を呼び出す必要があります。

今は共有ライブラリを読み込み、別のスレッドで実行している関数を実行しています。私の疑問は、スレッドがセグメンテーション違反のためにクラッシュした場合や、何らかの信号がプロセスに影響を与える場合です。 ?

個別のスレッドまたはプロセスで実行する方が優れているかどちらが優れていますか。

私の質問が明確でない場合は質問してください。

+0

スレッドが優れています。 –

+0

@MartinJames:! -/ – alk

+0

なぜ簡単にテストしてみませんか? – alk

答えて

1

スレッド内のクラッシュは、プロセス全体を停止します。クラッシュシグナル(SIGSEGV、SIGBUS、SIGABRTなど)は、プロセスの動作を制御できなくなり、何かがそのメモリに発生した可能性があることを意味します。

したがって、分離する必要がある場合は、別々のプロセスを生成する方がはるかに優れています。もちろん、誰かがあなたのプロセスをクラッシュさせることができれば、とにかくあなたのコンピュータを所有している人にはかなり近いです。信頼できないユーザーにこれを公開するつもりはないと確信しています。

+0

お返事ありがとうございます。私のシナリオでは、ライブラリの機能をテストしているので、ライブラリに信号障害が発生する可能性がさらに高まっています。あなたは最後の文を明確にしてください。「信頼できないユーザーにこれを公開しないことを願っています。」 –

+0

このようなものを信頼できないユーザーに公開すると、数秒でこのサービスを実行するマシンを引き継ぐことができます。それはセキュリティ上の悪夢です。 – Art

関連する問題