Make process.argv work with zygote

This commit is contained in:
Cheng Zhao 2015-06-19 22:56:10 +08:00
parent b4f90c8c81
commit 83fe340b98
3 changed files with 23 additions and 2 deletions

View file

@ -3,7 +3,9 @@
// found in the LICENSE file. // found in the LICENSE file.
#include "atom/app/atom_main_args.h" #include "atom/app/atom_main_args.h"
#include "vendor/node/deps/uv/include/uv.h"
#include "base/command_line.h"
#include "node/deps/uv/include/uv.h"
namespace atom { namespace atom {
@ -19,4 +21,11 @@ void AtomCommandLine::Init(int argc, const char* const* argv) {
} }
} }
#if defined(OS_LINUX)
// static
void AtomCommandLine::InitializeFromCommandLine() {
argv_ = base::CommandLine::ForCurrentProcess()->argv();
}
#endif
} // namespace atom } // namespace atom

View file

@ -8,7 +8,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "base/macros.h" #include "base/basictypes.h"
namespace atom { namespace atom {
@ -18,6 +18,12 @@ class AtomCommandLine {
static void Init(int argc, const char* const* argv); static void Init(int argc, const char* const* argv);
static std::vector<std::string> argv() { return argv_; } static std::vector<std::string> argv() { return argv_; }
#if defined(OS_LINUX)
// On Linux the command line has to be read from base::CommandLine since
// it is using zygote.
static void InitializeFromCommandLine();
#endif
private: private:
static std::vector<std::string> argv_; static std::vector<std::string> argv_;

View file

@ -128,6 +128,12 @@ void NodeBindings::Initialize() {
node::g_standalone_mode = is_browser_; node::g_standalone_mode = is_browser_;
node::g_upstream_node_mode = false; node::g_upstream_node_mode = false;
#if defined(OS_LINUX)
// Get real command line in renderer process forked by zygote.
if (!is_browser_)
AtomCommandLine::InitializeFromCommandLine();
#endif
// Parse the debug args. // Parse the debug args.
auto args = AtomCommandLine::argv(); auto args = AtomCommandLine::argv();
for (const std::string& arg : args) for (const std::string& arg : args)