4. सैंडबॉक्स चलाएं
पिछले सेक्शन में, आपने सैंडबॉक्स किया गया एनवायरमेंट, नीति, एक्ज़ीक्यूटर, और Sandboxee तैयार किया है. अगले चरण में, Sandbox2
ऑब्जेक्ट बनाना और उसे चलाना है.
सिंक्रोनस रूप से चलाएं
सैंडबॉक्स, साथ में काम कर सकता है. इसलिए, नतीजे मिलने तक ब्लॉक हो सकता है. नीचे दिया गया कोड स्निपेट, Sandbox2
ऑब्जेक्ट के इंस्टैंशिएट और इसके सिंक्रोनस एक्ज़ीक्यूशन को दिखाता है. ज़्यादा जानकारी के लिए, स्टैटिक देखें.
#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();
एसिंक्रोनस रूप से चलाएं
आप सैंडबॉक्स को एसिंक्रोनस रूप से भी चला सकते हैं, ताकि कोई नतीजा मिलने तक ब्लॉक न हो. उदाहरण के लिए, Sandboxee से कम्यूनिकेट करते समय यह काम का होता है. नीचे दिया गया कोड स्निपेट, इस्तेमाल के इस उदाहरण को दिखाता है. ज़्यादा जानकारी के लिए, crc4 और टूल देखें.
#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();