Post by Tim JohnsonPost by MRABimport subprocess
subprocess.run('which audacity', shell=True)
/usr/bin/audacity
CompletedProcess(args='which audacity', returncode=0)
Post by Tim JohnsonPost by MRABproc = subprocess.Popen('/usr/bin/audacity',
stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE,
close_fds=True)
53308
0
And I saw the interface of the program... So, in principle, what you
tried should work.
What happens if in a separate terminal you try:
$ ps auxwww | grep audacity?
Are there any processes running?
If your script fails, what is the error?
If it doesn't, can you run this:
$strace python ./audacity-test.py
where audacity-test.py looks like this:
import subprocess
proc = subprocess.Popen('/usr/local/bin/audacity',
stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE,
close_fds=True)
print(proc.returncode)
print(proc.pid)
proc.wait()
proc.kill()
print(proc.returncode)
Then, you should see something like:
clone(child_stack=NULL,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0x7f377d83b750) = 53932
close(10) = 0
close(8) = 0
close(6) = 0
close(3) = 0
read(9, "", 50000) = 0
close(9) = 0
write(1, "None\n", 5None
) = 5
write(1, "53932\n", 653932
) = 6
wait4(53932,
(the process id you are waiting for is going to be different of
course, but the important part is that you find the clone() call that
returns the process id your code is waiting on.)
And, if it doesn't look like the above, then show what *does* it look like.
On Fri, Jan 10, 2025 at 10:03 PM Tim Johnson via Python-list
Post by Tim JohnsonPost by MRAB,,, snipped
Popen(choice, stdout=PIPE, stderr=PIPE,
stdin=PIPE, close_fds=True)
My guess is my argument list is either insufficient or an argument is
causing the problem, but am unsure of which.
I have been retired from python programming for ten years, and am pretty
rusty, but it is still fun. There are plenty
of other ways to successfully launch audacity but it would be great to
make it work from this script.
What is the value of 'choice'?
You could try printing out the value of 'choice' for one that works
and the one that doesn't and then try them again interactively from
the Python prompt with the given values. That should eliminate all but
the essential code for easier debugging.
choice is /usr/local/bin/audacity, which is the correct path for
audacity on my system. As far as I can see, that string has no hidden bytes.
Invoking /usr/local/bin/audacity from the command line launches audacity
and so does choosing with dmenu_run. which -a audacity shows only that
item.
Maybe I need to isolate the function call and start stripping out
parameters. I should have time to do that later today.
Thanks
--
https://mail.python.org/mailman/listinfo/python-list