示例#1
0
def startup():

	# Get Name of Operating System
	os_name = platform.system()

	# Initialize Configuration File
	configFile = ConfigFileManager(CONFIG_FILE_PATH)

	instance_ID = configFile.poll("Program", "instance_ID")

	# Don't allow multiple instances of Jarvis to run concurrently
	if not(isinstance(instance_ID,str) and instance_ID == "NaN"):
		print "Multiple Instances Running, Start-up Failure."
		return

	# Operating System Check
	if os_name == "Windows" or os_name == "Linux":
		print "Jarvis is Running!"

		# Initialize Configuration File
		configFile.update("Program", "status", "NaN")
		configFile.update("Program", "instance_id", "NaN")
		configFile.update("Program", "error_code", "NaN")

		command_str = "python main.py"

		if os_name == "Windows":
			process_obj = subprocess.Popen(command_str.split(), creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
			configFile.update("Program", "instance_ID", process_obj.pid)
			print "Windows Version Created!"

		else:
			# Create New Process Group
			os.setpgrp() 

			# spawn JARVIS
			process_obj = subprocess.Popen(command_str.split(), shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
			configFile.update("Program", "instance_ID", process_obj.pid)

	else:
		print "I'm sorry, you are running " + os_name + ". I currently only run on Windows/Linux"
		return
示例#2
0
## DEPENDANCIES  --------------------------------------------
import os
import signal
import ctypes
from ConfigFileManager import ConfigFileManager

## Global Constants  ----------------------------------------
CONFIG_FILE_PATH = "config.ini"

## Code -----------------------------------------------------
configFile = ConfigFileManager(CONFIG_FILE_PATH)
pid = configFile.poll("Program", "instance_id")

PROCESS_TERMINATE = 1
handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, pid)
ctypes.windll.kernel32.TerminateProcess(handle, -1)
ctypes.windll.kernel32.CloseHandle(handle)