Source code for openalea.system.systemnodes
# -*- python -*-
#
# OpenAlea.Core
#
# Copyright 2006-2023 INRIA - CIRAD - INRA
#
# File author(s): Samuel Dufour-Kowalski <samuel.dufour@sophia.inria.fr>
# Christophe Pradal <christophe.prada@cirad.fr>
#
# Distributed under the Cecill-C License.
# See accompanying file LICENSE.txt or copy at
# http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
#
# OpenAlea WebSite : http://openalea.gforge.inria.fr
#
################################################################################
"""System Nodes"""
__license__ = "Cecill-C"
__revision__ = " $Id$ "
from openalea.core import *
from tempfile import TemporaryFile
import platform
[docs]
def system_cmd(str_list):
""" Execute a system command
Input : a list of string
Output : subprocess stdout, stderr
"""
import subprocess
return subprocess.Popen(str_list, stdout=subprocess.PIPE).communicate()
[docs]
def shell_command(cmd, directory):
""" Execute a command in a shell
cmd : the command as a string
dir : the directory where the cmd is executed
Output : status
"""
from subprocess import Popen,STDOUT, PIPE
output_stream = TemporaryFile()
if platform.system() == 'Darwin':
p = Popen(cmd, shell=True, cwd=directory,
stdin=PIPE, stdout=output_stream, stderr=PIPE)
status = p.communicate()
else:
p = Popen(cmd, shell=True, cwd=directory,
stdin=PIPE, stdout=output_stream, stderr=STDOUT)
status = p.wait()
output_stream.seek(0)
s= output_stream.read()
output_stream.close()
return status,s