[TIC-CORE] Initial Import
[archive/20170607/tools/tic-core.git] / tic / utils / process.py
1 #!/usr/bin/python
2 # Copyright (c) 2000 - 2016 Samsung Electronics Co., Ltd. All rights reserved.
3 #
4 # Contact: 
5 # @author Chulwoo Shin <cw1.shin@samsung.com>
6
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
10 #
11 # http://www.apache.org/licenses/LICENSE-2.0
12 #
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
18 #
19 # Contributors:
20 # - S-Core Co., Ltd
21
22 import subprocess
23
24 from tic.utils.error import TICError
25
26 def run(cmdln):
27     if isinstance(cmdln, list):
28         cmd = cmdln[0]
29         shellType = False
30     else:
31         import shlex
32         cmd = shlex.split(cmdln)[0]
33         shellType = True
34     
35     try:
36         p = subprocess.Popen(cmdln, 
37                              stdout=subprocess.PIPE,
38                              stderr=subprocess.PIPE,
39                              shell=shellType)
40         (sout, serr) = p.communicate()
41         out = ''.join(filter(None, [sout, serr]))
42     except OSError as e:
43         if e.errno == 2:
44             # No such file or directory
45             raise TICError('Cannot run command: %s' % cmd)
46         else:
47             raise
48
49     return (p.returncode, out)
50