Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
a30f7aca
Kaydet (Commit)
a30f7aca
authored
Eyl 26, 2000
tarafından
Greg Ward
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Reformat docstrings.
Standardize whitespace in function calls.
üst
be86bdea
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
38 deletions
+41
-38
spawn.py
Lib/distutils/spawn.py
+41
-38
No files found.
Lib/distutils/spawn.py
Dosyayı görüntüle @
a30f7aca
...
@@ -3,7 +3,8 @@
...
@@ -3,7 +3,8 @@
Provides the 'spawn()' function, a front-end to various platform-
Provides the 'spawn()' function, a front-end to various platform-
specific functions for launching another program in a sub-process.
specific functions for launching another program in a sub-process.
Also provides the 'find_executable()' to search the path for a given
Also provides the 'find_executable()' to search the path for a given
executable name. """
executable name.
"""
# created 1999/07/24, Greg Ward
# created 1999/07/24, Greg Ward
...
@@ -19,24 +20,24 @@ def spawn (cmd,
...
@@ -19,24 +20,24 @@ def spawn (cmd,
dry_run
=
0
):
dry_run
=
0
):
"""Run another program, specified as a command list 'cmd', in a new
"""Run another program, specified as a command list 'cmd', in a new
process. 'cmd' is just the argument list for the new process, ie.
process. 'cmd' is just the argument list for the new process, ie.
cmd[0] is the program to run and cmd[1:] are the rest of its
cmd[0] is the program to run and cmd[1:] are the rest of its arguments.
arguments. There is no way to run a program with a name different
There is no way to run a program with a name different from that of its
from that of its
executable.
executable.
If 'search_path' is true (the default), the system's executable
If 'search_path' is true (the default), the system's executable search
search path will be used to find the program; otherwise, cmd[0] must
path will be used to find the program; otherwise, cmd[0] must be the
be the exact path to the executable. If 'verbose' is true, a
exact path to the executable. If 'verbose' is true, a one-line summary
one-line summary of the command will be printed before it is run.
of the command will be printed before it is run. If 'dry_run' is true,
If 'dry_run' is true,
the command will not actually be run.
the command will not actually be run.
Raise DistutilsExecError if running the program fails in any way;
Raise DistutilsExecError if running the program fails in any way; just
just return on success."""
return on success.
"""
if
os
.
name
==
'posix'
:
if
os
.
name
==
'posix'
:
_spawn_posix
(
cmd
,
search_path
,
verbose
,
dry_run
)
_spawn_posix
(
cmd
,
search_path
,
verbose
,
dry_run
)
elif
os
.
name
==
'nt'
:
elif
os
.
name
==
'nt'
:
_spawn_nt
(
cmd
,
search_path
,
verbose
,
dry_run
)
_spawn_nt
(
cmd
,
search_path
,
verbose
,
dry_run
)
else
:
else
:
raise
DistutilsPlatformError
,
\
raise
DistutilsPlatformError
,
\
"don't know how to spawn programs on platform '
%
s'"
%
os
.
name
"don't know how to spawn programs on platform '
%
s'"
%
os
.
name
...
@@ -45,8 +46,10 @@ def spawn (cmd,
...
@@ -45,8 +46,10 @@ def spawn (cmd,
def
_nt_quote_args
(
args
):
def
_nt_quote_args
(
args
):
"""Obscure quoting command line arguments on NT.
"""Quote command-line arguments for DOS/Windows conventions: just
Simply quote every argument which contains blanks."""
wraps every argument which contains blanks in double quotes, and
returns a new argument list.
"""
# XXX this doesn't seem very robust to me -- but if the Windows guys
# XXX this doesn't seem very robust to me -- but if the Windows guys
# say it'll work, I guess I'll have to accept it. (What if an arg
# say it'll work, I guess I'll have to accept it. (What if an arg
...
@@ -54,8 +57,8 @@ def _nt_quote_args (args):
...
@@ -54,8 +57,8 @@ def _nt_quote_args (args):
# have to be escaped? Is there an escaping mechanism other than
# have to be escaped? Is there an escaping mechanism other than
# quoting?)
# quoting?)
for
i
in
range
(
len
(
args
)):
for
i
in
range
(
len
(
args
)):
if
string
.
find
(
args
[
i
],
' '
)
!=
-
1
:
if
string
.
find
(
args
[
i
],
' '
)
!=
-
1
:
args
[
i
]
=
'"
%
s"'
%
args
[
i
]
args
[
i
]
=
'"
%
s"'
%
args
[
i
]
return
args
return
args
...
@@ -65,16 +68,16 @@ def _spawn_nt (cmd,
...
@@ -65,16 +68,16 @@ def _spawn_nt (cmd,
dry_run
=
0
):
dry_run
=
0
):
executable
=
cmd
[
0
]
executable
=
cmd
[
0
]
cmd
=
_nt_quote_args
(
cmd
)
cmd
=
_nt_quote_args
(
cmd
)
if
search_path
:
if
search_path
:
# either we find one or it stays the same
# either we find one or it stays the same
executable
=
find_executable
(
executable
)
or
executable
executable
=
find_executable
(
executable
)
or
executable
if
verbose
:
if
verbose
:
print
string
.
join
([
executable
]
+
cmd
[
1
:],
' '
)
print
string
.
join
([
executable
]
+
cmd
[
1
:],
' '
)
if
not
dry_run
:
if
not
dry_run
:
# spawn for NT requires a full path to the .exe
# spawn for NT requires a full path to the .exe
try
:
try
:
rc
=
os
.
spawnv
(
os
.
P_WAIT
,
executable
,
cmd
)
rc
=
os
.
spawnv
(
os
.
P_WAIT
,
executable
,
cmd
)
except
OSError
,
exc
:
except
OSError
,
exc
:
# this seems to happen when the command isn't found
# this seems to happen when the command isn't found
raise
DistutilsExecError
,
\
raise
DistutilsExecError
,
\
...
@@ -91,39 +94,39 @@ def _spawn_posix (cmd,
...
@@ -91,39 +94,39 @@ def _spawn_posix (cmd,
dry_run
=
0
):
dry_run
=
0
):
if
verbose
:
if
verbose
:
print
string
.
join
(
cmd
,
' '
)
print
string
.
join
(
cmd
,
' '
)
if
dry_run
:
if
dry_run
:
return
return
exec_fn
=
search_path
and
os
.
execvp
or
os
.
execv
exec_fn
=
search_path
and
os
.
execvp
or
os
.
execv
pid
=
os
.
fork
()
pid
=
os
.
fork
()
if
pid
==
0
:
# in the child
if
pid
==
0
:
# in the child
try
:
try
:
#print "cmd[0] =", cmd[0]
#print "cmd[0] =", cmd[0]
#print "cmd =", cmd
#print "cmd =", cmd
exec_fn
(
cmd
[
0
],
cmd
)
exec_fn
(
cmd
[
0
],
cmd
)
except
OSError
,
e
:
except
OSError
,
e
:
sys
.
stderr
.
write
(
"unable to execute
%
s:
%
s
\n
"
%
sys
.
stderr
.
write
(
"unable to execute
%
s:
%
s
\n
"
%
(
cmd
[
0
],
e
.
strerror
))
(
cmd
[
0
],
e
.
strerror
))
os
.
_exit
(
1
)
os
.
_exit
(
1
)
sys
.
stderr
.
write
(
"unable to execute
%
s for unknown reasons"
%
cmd
[
0
])
sys
.
stderr
.
write
(
"unable to execute
%
s for unknown reasons"
%
cmd
[
0
])
os
.
_exit
(
1
)
os
.
_exit
(
1
)
else
:
# in the parent
else
:
# in the parent
# Loop until the child either exits or is terminated by a signal
# Loop until the child either exits or is terminated by a signal
# (ie. keep waiting if it's merely stopped)
# (ie. keep waiting if it's merely stopped)
while
1
:
while
1
:
(
pid
,
status
)
=
os
.
waitpid
(
pid
,
0
)
(
pid
,
status
)
=
os
.
waitpid
(
pid
,
0
)
if
os
.
WIFSIGNALED
(
status
):
if
os
.
WIFSIGNALED
(
status
):
raise
DistutilsExecError
,
\
raise
DistutilsExecError
,
\
"command '
%
s' terminated by signal
%
d"
%
\
"command '
%
s' terminated by signal
%
d"
%
\
(
cmd
[
0
],
os
.
WTERMSIG
(
status
))
(
cmd
[
0
],
os
.
WTERMSIG
(
status
))
elif
os
.
WIFEXITED
(
status
):
elif
os
.
WIFEXITED
(
status
):
exit_status
=
os
.
WEXITSTATUS
(
status
)
exit_status
=
os
.
WEXITSTATUS
(
status
)
if
exit_status
==
0
:
if
exit_status
==
0
:
return
# hey, it succeeded!
return
# hey, it succeeded!
else
:
else
:
...
@@ -131,7 +134,7 @@ def _spawn_posix (cmd,
...
@@ -131,7 +134,7 @@ def _spawn_posix (cmd,
"command '
%
s' failed with exit status
%
d"
%
\
"command '
%
s' failed with exit status
%
d"
%
\
(
cmd
[
0
],
exit_status
)
(
cmd
[
0
],
exit_status
)
elif
os
.
WIFSTOPPED
(
status
):
elif
os
.
WIFSTOPPED
(
status
):
continue
continue
else
:
else
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment