ホームページ >バックエンド開発 >C++ >C から実行可能ファイルを起動する方法: `system()` のより安全な代替手段?

C から実行可能ファイルを起動する方法: `system()` のより安全な代替手段?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-02 01:21:02262ブラウズ

  How to Launch Executables from C  :  A Safer Alternative to `system()`?

C からの実行可能ファイルの起動 : system() の代替

C では、システムを使用して別の実行可能ファイルから実行可能ファイルを起動できます。 () 関数を使用できますが、この方法ではセキュリティとシステム効率の問題が生じます。より堅牢なアプローチには、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() の使用:

  1. 上に示すように、startup() 関数を定義します。 .
  2. lpApplicationName で実行可能ファイルへのパスを指定します。
  3. CreateProcess() を呼び出して実行可能ファイルを起動します。
  4. リソース クリーンアップのためにプロセス ハンドルとスレッド ハンドルを閉じます。

エラーのトラブルシューティング:

実行可能ファイルへの指定されたパスが正しいことを確認してください。提供されたコードで発生したエラーは、「OpenFile.exe」への無効なパスが原因である可能性があります。

以上がC から実行可能ファイルを起動する方法: `system()` のより安全な代替手段?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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