Jump to content

Package .app et execution de sous process thttpd


Recommended Posts

Salut,

Voilà, je suis bloqué depuis deux jours dans un projet.

Simplement :

Créer un Package .app exécutant un script Python qui lui-même lance un thttpd compilé et contenu dans le package, plus diverses activités qui concernent pas mon problème.

Mon problème est simple, mais impossible de trouver la moindre de piste pour le résoudre :

Quand j'execute le code indiqué dans le Info.plist du package, le serveur se lance correctement et le script poursuit donc execution,

Quand j'execute le package .app directement, le serveur refuse catégoriquement de se lancer, j'ai d'abord mis en cause le serveur puis blanchi après avoir essayé un shttpd.

Au niveau du script Python, j'ai tanté de faire l'appel au serveur par :

commands.getoutput

os.system

En threads distinct ou non.

Et dans la syntax de l'appel thttpd, 'nohup' ainsi que rediriger les sorties vers dev/null des fois que ça bloquerait là...

Dans tous les cas il refuse, alors qu'un appel direct du script principal fonctionne en ne retournant aucune erreur/warning.

def LaunchServer():
os.system('../Resources/sbin/thttpd -p 9519 -d ../Resources/www -u nobody')

Voici le code actuel qui appel le serveur, si j'execute

../Resources/sbin/thttpd -p 9519 -d ../Resources/www -u nobody

ça fonctionne également.

Mon idée est que l'utilisation d'un .app implique des restrictions, mais je ne vois exactement lesquels

Merci pour votre aide !

EDIT:

Extraits de code :

Infos.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDocumentTypes</key>
<array>
	<dict>
		<key>CFBundleTypeOSTypes</key>
		<array>
			<string>****</string>
			<string>fold</string>
			<string>disk</string>
		</array>
		<key>CFBundleTypeRole</key>
		<string>Viewer</string>
	</dict>
</array>
<key>CFBundleExecutable</key>
<string>Gribouille.py</string>
<key>CFBundleIconFile</key>
<string>mainlogo.icns</string>
<key>CFBundleIdentifier</key>
<string>Gribouille</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Gribouille</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
</dict>
</plist>

Code de Gribouille.py
#!/usr/bin/env python
# Closed source, written by Julien ARNAUD.

# Importing class and files
import commands
import threading
import sys
import os

# Defining function for launching vital processes
def LaunchServer():
os.system('../Resources/sbin/thttpd -p 9519 -d ../Resources/www -u nobody')

# Defining threads for functions
server = threading.Thread(None, LaunchServer, None)

# LaunchServer()

# Launching threads
server.start()	

# Print back returned code
#print server_code



# Exites the script
# sys.exit(general_code)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...