ホームページ >バックエンド開発 >C++ >C で外部プログラムを確実に実行するにはどうすればよいですか?

C で外部プログラムを確実に実行するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-29 00:47:02180ブラウズ

How Can I Reliably Execute External Programs in C  ?

C プログラム内から実行可能ファイルを開く

独自の C アプリケーション内から外部プログラムを実行する必要がある場合があります。 system() の使用は単純な方法のように思えるかもしれませんが、一定のリスクと制限が伴います。この記事では、CreateProcess() 関数を使用した、より信頼性の高いアプローチについて説明します。

新しいプロセスの作成

CreateProcess() 関数を使用すると、新しいプロセスを起動して、呼び出し元のアプリケーションから独立して実行されます。実装例は次のとおりです。

<code class="cpp">#include <windows.h>

VOID startup(LPCTSTR lpApplicationName)
{
   STARTUPINFO si;     
   PROCESS_INFORMATION pi;

   ZeroMemory( &si, sizeof(si) );
   si.cb = sizeof(si);
   ZeroMemory( &pi, sizeof(pi) );

   CreateProcess( lpApplicationName,   
    argv[1],        
    NULL,           
    NULL,           
    FALSE,          
    0,              
    NULL,           
    NULL,           
    &si,            
    &pi             
    );

   CloseHandle( pi.hProcess );
   CloseHandle( pi.hThread );
}</code>

この関数は、実行可能ファイルへのパスを引数として受け取り、そのための新しいプロセスを作成します。その後、プロセスは独立して実行されます。

CreateProcess() の効果的な使用

サンプル コードでは、argv[1] 引数には、実行可能ファイルへのフル パスが含まれている必要があります。起動したいです。たとえば、独自のアプリケーションと同じディレクトリにある「OpenFile.exe」を実行するには:

<code class="cpp">startup( "OpenFile.exe" );</code>

エラーの回避

システムの使用中に発生したエラー() は、実行可能ファイルへの完全なパスを指定しなかったために発生した可能性があります。 CreateProcess() が正しく機能するには、ターゲット プログラムへの絶対パスが必要です。

結論

CreateProcess() を使用することは、内部から実行可能ファイルを開くためのより安全で信頼性の高い方法です。 C アプリケーション。これにより、実行環境を制御し、潜在的なセキュリティ問題を回避できます。

以上がC で外部プログラムを確実に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。