⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 run.cpp

📁 RESIN 3.2 最新源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		args[i++] = strdup(rsprintf(buf, "\"%s\"", argv[0]));		argc--;		argv++;	}	args[i] = 0;	return args;}char **get_server_args(char *name, char *full_name, char *main, int argc, char **argv){	char buf[BUF_SIZE];	char program[BUF_SIZE];	char *java_exe = 0;	char *java_home = 0;	char *resin_home = 0;	char *server_root = 0;	char *stdout_file = 0;	char *stderr_file = 0;	char *jvm_file = 0;	char *cp = 0;	int verbose = 0; // XXX: if create console, this shouldn't be on by default	int msjava = 0;	int jit = 1;	char **java_argv = (char **) malloc((argc + 12) * sizeof(char *));	int java_argc = 0;	char **resin_argv = (char **) malloc((argc + 12) * sizeof(char *));	int resin_argc = 0;	char *env_classpath = getenv("CLASSPATH");	char **initial_argv = argv;	char *user = 0;	char *password = 0;	int is_install = 0;	if (! GetModuleFileName(NULL, program, sizeof(program))) {		die("Can't get module executable");		return 0;	}	java_argv[0] = 0;	resin_argv[0] = 0;	while (argc > 1) {		if (! strcmp(argv[1], "-verbose")) {			argc--;			argv++;			verbose = 1;			/*		} else if (! strncmp(argv[1], "-J", 2)) {		    java_argv[java_argc++] = strdup(argv[1] + 2);			argc--;			argv++;			*/		} else if (! strncmp(argv[1], "-D", 2)) {		    java_argv[java_argc++] = strdup(argv[1]);			argc--;			argv++;		} else if (! strncmp(argv[1], "-X", 2)) {		    java_argv[java_argc++] = strdup(argv[1]);			argc--;			argv++;		} else if (! strncmp(argv[1], "-E", 2)) {			putenv(strdup(argv[1] + 2));			argc--;			argv++;		} else if (! strcmp(argv[1], "-user")) {			user = argv[2];			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-password")) {			password = argv[2];			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-name")) {			name = argv[2];			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-display-name")) {			full_name = argv[2];			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-install")) {			is_install = 1;			argv++;			argc--;		} else if (! strcmp(argv[1], "-install-as") ||				   ! strcmp(argv[1], "-install_as")) {		   name = argv[2];		   full_name = argv[2];		   is_install = 1;		   argv += 2;		   argc -= 2;		} else if (! strcmp(argv[1], "-remove")) {			remove_service(name);			/*			sprintf(buf, "Removed %s as an NT service", name);			MessageBox(0, buf, "Information", MB_OK);			*/			fprintf(stdout, "Removed %s as an NT service\n", name);			exit(0);		} else if (! strcmp(argv[1], "-remove-as") ||				   ! strcmp(argv[1], "-remove_as")) {			remove_service(argv[2]);			/*			sprintf(buf, "Removed %s as an NT service", argv[2]);			MessageBox(0, buf, "Information", MB_OK);			*/			fprintf(stdout, "Removed %s as an NT service\n", argv[2]);			exit(0);		} else if (! strcmp(argv[1], "-java_home") ||				   ! strcmp(argv[1], "-java-home")) {			java_home = strdup(argv[2]);			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-java_exe") ||			       ! strcmp(argv[1], "-java-exe")) {			java_exe = strdup(argv[2]);			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-msjava")) {			msjava = 1;			argc -= 1;			argv += 1;		} else if (! strcmp(argv[1], "-resin_home") ||			       ! strcmp(argv[1], "-resin-home") ||				   ! strcmp(argv[1], "--resin-home")) {			resin_home = strdup(argv[2]);			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-server_root") ||			   ! strcmp(argv[1], "-server-root") ||			   ! strcmp(argv[1], "--root-directory")) {			server_root = strdup(argv[2]);			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-classpath") || ! strcmp(argv[1], "-cp")) {			cp = add_classpath(cp, argv[2]);			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-env-classpath")) {			env_classpath = argv[2];			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-stdout")) {			stdout_file = argv[2];			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-stderr")) {			stderr_file = argv[2];			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-jvm-log")) {			jvm_file = argv[2];			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-main")) {			main = strdup(argv[2]);			argc -= 2;			argv += 2;		} else if (! strcmp(argv[1], "-help") ||			   ! strcmp(argv[1], "-h")) {		        usage(name);			exit(0);		} else if (! strcmp(argv[1], "-service")) {			argc -= 1;			argv += 1;			g_is_service = 1;		} else if (! strcmp(argv[1], "-console")) {			argc -= 1;			argv += 1;			g_console = 1;		} else if (! strcmp(argv[1], "-nojit")) {			jit = 0;			argc -= 1;			argv += 1;		} else if (! strcmp(argv[1], "-standalone")) {			g_is_standalone = 1;			argc -= 1;			argv += 1;		} else if (! strcmp(argv[1], "-e") || ! strcmp(argv[1], "-compile")) {			resin_argv[resin_argc++] = argv[1];			g_is_standalone = 1;			while (argc > 1) {				resin_argv[resin_argc++] = argv[1];				argc -= 1;				argv += 1;			}		} else if (! strcmp(argv[1], "start")				   || ! strcmp(argv[1], "stop")				   || ! strcmp(argv[1], "restart")				   || ! strcmp(argv[1], "shutdown")) {		   resin_argv[resin_argc++] = argv[1];		   argc -= 1;		   argv += 1;		   main = "com.caucho.boot.ResinBoot";		   g_is_standalone = 1;		   g_console = 0;		} else {			resin_argv[resin_argc++] = argv[1];			argc -= 1;			argv += 1;		}	}	if (is_install) {			install_service(name, full_name, user, password, initial_argv);			fprintf(stdout, "Installed %s as an NT service\n", name);			/*			sprintf(buf, "Installed %s as an NT service", name);			MessageBox(0, buf, "Information", MB_OK);			*/			exit(0);	}	java_argv[java_argc] = 0;	resin_argv[resin_argc] = 0;	resin_home = get_resin_home(resin_home, program);	if (! resin_home) {		die("Can't find RESIN_HOME");		return 0;	}	if (! server_root)		server_root = resin_home;	if (stderr_file && ! stdout_file)		stdout_file = stderr_file;	if (stdout_file && ! stderr_file)		stderr_file = stdout_file;	if (! g_is_standalone) {		AllocConsole();	}	if (false && ! g_console && stderr_file) {		CreateDirectory(rsprintf(buf, "%s/log", server_root), NULL);		SECURITY_ATTRIBUTES security;		memset(&security, 0, sizeof(security));		security.nLength = sizeof(security);		security.lpSecurityDescriptor = 0;		security.bInheritHandle = TRUE;	    char *file_name;				if (! jvm_file || ! *jvm_file)			file_name = rsprintf(buf, "%s/log/jvm.log", server_root);		else			file_name = rsprintf(buf, "%s/%s", server_root, jvm_file);		HANDLE errfile = CreateFile(file_name, GENERIC_WRITE, 			                      FILE_SHARE_READ|FILE_SHARE_WRITE,								  &security,								  OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);		SetStdHandle(STD_ERROR_HANDLE, errfile);		SetFilePointer(errfile, 0, 0, FILE_END);		HANDLE outfile = errfile;		SetStdHandle(STD_OUTPUT_HANDLE, outfile);		SetFilePointer(outfile, 0, 0, FILE_END);	}		int fdOut = _open_osfhandle((long) GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);	int fdErr = _open_osfhandle((long) GetStdHandle(STD_ERROR_HANDLE), _O_TEXT);	if (fdOut >= 0)		out = fdopen(fdOut, "w");	if (fdErr >= 0)		err = fdopen(fdErr, "w");	if (out && err) {  	  *stdout = *out;	  *stderr = *err;		  setvbuf(out, NULL, _IONBF, 0);	  setvbuf(err, NULL, _IONBF, 0);	}	if (msjava)		java_home = 0;	else		java_home = get_java_home(resin_home, java_home);	cp = set_classpath(cp, resin_home, java_home, env_classpath);	SetEnvironmentVariable("CLASSPATH", cp);	char **args = 0;	if (java_home) {		if (! java_exe)			java_exe = get_java_exe(java_home);		args = set_jdk_args(java_exe, cp, resin_home, server_root, jit, main, resin_argc, resin_argv, java_argv);	}	else {		if (! java_exe)			java_exe = "jview.exe";		args = set_ms_args(java_exe, cp, server_root, jit, main, resin_argc, resin_argv, java_argv);	}	sprintf(buf, "PATH=%s;%s\\bin;%s\\win32;%s\\win64;\\openssl\\bin", 		    getenv("PATH"), resin_home, resin_home, resin_home);	putenv(buf);	if (! SetCurrentDirectory(server_root)) {		die("Can't change dir to %s\n", server_root);		return 0;	}	if (verbose) {		fprintf(stdout, "java:        %s\n", java_exe);		fprintf(stdout, "JAVA_HOME:   %s\n", java_home);		fprintf(stdout, "RESIN_HOME:  %s\n", resin_home);		fprintf(stdout, "SERVER_ROOT: %s\n", server_root);		fprintf(stdout, "CLASSPATH:   %s\n", cp);		fprintf(stdout, "PATH:        %s\n", getenv("PATH"));		for (int i = 0; args[i]; i++)			fprintf(stdout, "arg %d:      %s\n", i, args[i]);	}	//fflush(out)	//fflush(err);	if (g_is_standalone) {		int result = exec_java(java_exe, args);		if (1 || result) {			log("service %d\n", g_is_service);			log("exec %s (status %d)\n", java_exe, result);			for (int i = 0; args[i]; i++)				log("  arg-%d: %s\n", i, args[i]);		}		if (! g_is_service)		  exit(result);		return 0;	}	return args;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -