4. सैंडबॉक्स चलाना
पिछले सेक्शन में, आपने सैंडबॉक्स वाला एनवायरमेंट, नीति, एक्ज़ीक्यूटर, और सैंडबॉक्सी तैयार किया था. अगला चरण, Sandbox2
ऑब्जेक्ट बनाना और उसे चलाना है.
सिंक किए गए तरीके से चलाना
सैंडबॉक्स को सिंक्रोनस तरीके से चलाया जा सकता है. इसलिए, जब तक कोई नतीजा नहीं मिल जाता, तब तक यह ब्लॉक रहता है. नीचे दिए गए कोड स्निपेट में, Sandbox2
ऑब्जेक्ट को इंस्टैंटिएट करने और उसे सिंक्रोनस तरीके से लागू करने का तरीका दिखाया गया है. ज़्यादा जानकारी वाले उदाहरण के लिए, static देखें.
#include "sandboxed_api/sandbox2/sandbox2.h"
sandbox2::Sandbox2 s2(std::move(executor), std::move(policy));
sandbox2::Result result = s2.Run(); // Synchronous
LOG(INFO) << "Result of sandbox execution: " << result.ToString();
एसिंक्रोनस तरीके से चलाना
सैंडबॉक्स को एसिंक्रोनस तरीके से भी चलाया जा सकता है. इससे, नतीजे मिलने तक यह ब्लॉक नहीं होता. उदाहरण के लिए, यह सैंडबॉक्सी से कम्यूनिकेट करते समय काम आता है. नीचे दिए गए कोड स्निपेट में, इस इस्तेमाल के उदाहरण के बारे में बताया गया है. ज़्यादा जानकारी वाले उदाहरणों के लिए, crc4 और tool देखें.
#include "sandboxed_api/sandbox2/sandbox2.h"
sandbox2::Sandbox2 s2(std::move(executor), std::move(policy));
if (s2.RunAsync()) {
// Communicate with sandboxee, use s2.Kill() to kill it if needed
// ...
}
Sandbox2::Result result = s2.AwaitResult();
LOG(INFO) << "Final execution status: " << result.ToString();