* Detecting a running process in Elisp
@ 2013-07-26 15:26 gentsquash
2013-07-26 15:37 ` Eli Zaretskii
` (3 more replies)
0 siblings, 4 replies; 16+ messages in thread
From: gentsquash @ 2013-07-26 15:26 UTC (permalink / raw)
To: help-gnu-emacs
I have a process "ScidvsMac" which I'd like to detect in
Elisp. I'm currently using
(search "ScidvsMac" (shell-command-to-string "ps -A"))
but is there something cleaner?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
2013-07-26 15:26 Detecting a running process in Elisp gentsquash
@ 2013-07-26 15:37 ` Eli Zaretskii
2013-07-26 15:50 ` Drew Adams
` (2 subsequent siblings)
3 siblings, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2013-07-26 15:37 UTC (permalink / raw)
To: help-gnu-emacs
> Date: Fri, 26 Jul 2013 08:26:25 -0700 (PDT)
> From: gentsquash@gmail.com
>
> I have a process "ScidvsMac" which I'd like to detect in
> Elisp. I'm currently using
>
> (search "ScidvsMac" (shell-command-to-string "ps -A"))
>
> but is there something cleaner?
There's list-system-processes to list all of the processes, and
process-attributes to examine their attributes, including name,
command line, etc.
^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: Detecting a running process in Elisp
2013-07-26 15:26 Detecting a running process in Elisp gentsquash
2013-07-26 15:37 ` Eli Zaretskii
@ 2013-07-26 15:50 ` Drew Adams
2013-07-26 15:54 ` Eli Zaretskii
[not found] ` <<83siz1z58a.fsf@gnu.org>
[not found] ` <mailman.1854.1374853118.12400.help-gnu-emacs@gnu.org>
2013-07-26 23:18 ` gentsquash
3 siblings, 2 replies; 16+ messages in thread
From: Drew Adams @ 2013-07-26 15:50 UTC (permalink / raw)
To: gentsquash, help-gnu-emacs
> I have a process "ScidvsMac" which I'd like to detect in
> Elisp. I'm currently using
> (search "ScidvsMac" (shell-command-to-string "ps -A"))
> but is there something cleaner?
Without knowing anything about processes in Elisp, I tried
using apropos "processes" (apropos "process" had too many hits).
That led me to `list-processes', which led me to `list-processes--refresh'.
That led me to `process-list', which I imagine you can use to get
what you want. Each element of `process-list' is supposedly a
process object (the doc is not terrific for `process-list'), which
means you can use functions such as `process-buffer', `process-name',
`process-type', `process-status', and `process-attributes' on it.
HTH. Remember: `apropos' and its friends are your friends.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
2013-07-26 15:50 ` Drew Adams
@ 2013-07-26 15:54 ` Eli Zaretskii
[not found] ` <<83siz1z58a.fsf@gnu.org>
1 sibling, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2013-07-26 15:54 UTC (permalink / raw)
To: help-gnu-emacs
> Date: Fri, 26 Jul 2013 08:50:35 -0700 (PDT)
> From: Drew Adams <drew.adams@oracle.com>
>
> Without knowing anything about processes in Elisp, I tried
> using apropos "processes" (apropos "process" had too many hits).
>
> That led me to `list-processes', which led me to `list-processes--refresh'.
>
> That led me to `process-list', which I imagine you can use to get
> what you want.
These are for processes that Emacs launched. Other processes running
on the system will not show.
> HTH. Remember: `apropos' and its friends are your friends.
Right, because list-system-processes is also there.
^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: Detecting a running process in Elisp
[not found] ` <<83siz1z58a.fsf@gnu.org>
@ 2013-07-26 16:17 ` Drew Adams
2013-07-26 18:49 ` Eli Zaretskii
[not found] ` <<83mwp9yx5f.fsf@gnu.org>
0 siblings, 2 replies; 16+ messages in thread
From: Drew Adams @ 2013-07-26 16:17 UTC (permalink / raw)
To: Eli Zaretskii, help-gnu-emacs
> > Without knowing anything about processes in Elisp, I tried
> > using apropos "processes" (apropos "process" had too many hits).
> >
> > That led me to `list-processes', which led me to `list-processes--
> > refresh'. That led me to `process-list', which I imagine you can
> > use to get what you want.
>
> These are for processes that Emacs launched. Other processes running
> on the system will not show.
>
> > HTH. Remember: `apropos' and its friends are your friends.
>
> Right, because list-system-processes is also there.
Good correction - `list-system-processes', not `list-processes' or
`process-list'.
[Too bad, BTW, that the doc string of `list-processes' says
"Display a list of all processes" - N.B. "ALL", not all processes
that Emacs has launched.
It mentions exclusion of certain processes, depending on argument
QUERY-ONLY and whether exited or signaled, but it does not go beyond
that to characterize which other processes might be excluded.]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
[not found] ` <mailman.1854.1374853118.12400.help-gnu-emacs@gnu.org>
@ 2013-07-26 16:58 ` Pascal J. Bourguignon
2013-07-26 18:33 ` Eli Zaretskii
[not found] ` <mailman.1870.1374863596.12400.help-gnu-emacs@gnu.org>
0 siblings, 2 replies; 16+ messages in thread
From: Pascal J. Bourguignon @ 2013-07-26 16:58 UTC (permalink / raw)
To: help-gnu-emacs
Eli Zaretskii <eliz@gnu.org> writes:
>> Date: Fri, 26 Jul 2013 08:26:25 -0700 (PDT)
>> From: gentsquash@gmail.com
>>
>> I have a process "ScidvsMac" which I'd like to detect in
>> Elisp. I'm currently using
>>
>> (search "ScidvsMac" (shell-command-to-string "ps -A"))
>>
>> but is there something cleaner?
>
> There's list-system-processes to list all of the processes, and
> process-attributes to examine their attributes, including name,
> command line, etc.
And what is the function to lock the system so that the list of PIDs
returned by list-system-processes is consistent with the actual
processes in the system when you call process-attributes on them?
--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
You know you've been lisping too long when you see a recent picture of George
Lucas and think "Wait, I thought John McCarthy was dead!" -- Dalek_Baldwin
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
2013-07-26 16:58 ` Pascal J. Bourguignon
@ 2013-07-26 18:33 ` Eli Zaretskii
[not found] ` <mailman.1870.1374863596.12400.help-gnu-emacs@gnu.org>
1 sibling, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2013-07-26 18:33 UTC (permalink / raw)
To: help-gnu-emacs
> From: "Pascal J. Bourguignon" <pjb@informatimago.com>
> Date: Fri, 26 Jul 2013 18:58:15 +0200
>
> > There's list-system-processes to list all of the processes, and
> > process-attributes to examine their attributes, including name,
> > command line, etc.
>
> And what is the function to lock the system so that the list of PIDs
> returned by list-system-processes is consistent with the actual
> processes in the system when you call process-attributes on them?
How is this relevant to the OP's question?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
2013-07-26 16:17 ` Drew Adams
@ 2013-07-26 18:49 ` Eli Zaretskii
[not found] ` <<83mwp9yx5f.fsf@gnu.org>
1 sibling, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2013-07-26 18:49 UTC (permalink / raw)
To: help-gnu-emacs
> Date: Fri, 26 Jul 2013 09:17:55 -0700 (PDT)
> From: Drew Adams <drew.adams@oracle.com>
>
> [Too bad, BTW, that the doc string of `list-processes' says
> "Display a list of all processes" - N.B. "ALL", not all processes
> that Emacs has launched.
Fixed.
^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: Detecting a running process in Elisp
[not found] ` <<83mwp9yx5f.fsf@gnu.org>
@ 2013-07-26 18:54 ` Drew Adams
0 siblings, 0 replies; 16+ messages in thread
From: Drew Adams @ 2013-07-26 18:54 UTC (permalink / raw)
To: Eli Zaretskii, help-gnu-emacs
> > [Too bad, BTW, that the doc string of `list-processes' says
> > "Display a list of all processes" - N.B. "ALL", not all processes
> > that Emacs has launched.
>
> Fixed.
That was quick. Thx.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
[not found] ` <mailman.1870.1374863596.12400.help-gnu-emacs@gnu.org>
@ 2013-07-26 20:57 ` Pascal J. Bourguignon
2013-07-27 7:43 ` Eli Zaretskii
0 siblings, 1 reply; 16+ messages in thread
From: Pascal J. Bourguignon @ 2013-07-26 20:57 UTC (permalink / raw)
To: help-gnu-emacs
Eli Zaretskii <eliz@gnu.org> writes:
>> From: "Pascal J. Bourguignon" <pjb@informatimago.com>
>> Date: Fri, 26 Jul 2013 18:58:15 +0200
>>
>> > There's list-system-processes to list all of the processes, and
>> > process-attributes to examine their attributes, including name,
>> > command line, etc.
>>
>> And what is the function to lock the system so that the list of PIDs
>> returned by list-system-processes is consistent with the actual
>> processes in the system when you call process-attributes on them?
>
> How is this relevant to the OP's question?
It is relevant to the answer, to the proposed API.
--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
You know you've been lisping too long when you see a recent picture of George
Lucas and think "Wait, I thought John McCarthy was dead!" -- Dalek_Baldwin
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
2013-07-26 15:26 Detecting a running process in Elisp gentsquash
` (2 preceding siblings ...)
[not found] ` <mailman.1854.1374853118.12400.help-gnu-emacs@gnu.org>
@ 2013-07-26 23:18 ` gentsquash
2013-07-26 23:57 ` Drew Adams
` (3 more replies)
3 siblings, 4 replies; 16+ messages in thread
From: gentsquash @ 2013-07-26 23:18 UTC (permalink / raw)
To: help-gnu-emacs
Thanks, all, for your replies. I realize that I didn't give
enough information. I'm running
GNU Emacs 22.3.1 (i386-apple-darwin9.8.0, Carbon Version 1.6.0)
under Mac OS. It appears there is no `list-system-processes' in Emacs22.
[Aside: I've been quite happy with Carbon Emacs, but my understanding
is that it is no longer updated. Is there a recommended version of
Emacs23 (or 24?) for Mac users who are used to Carbon Emacs?]
I had run `apropos' on "shell" and "command", but inexplicably didn't
run it on "process". When I did that now, I didn't see -in Emacs22-
a cmd for listing the system processes.
/--------------------------------------------------------\
Eli Zaretskii
> From: Drew Adams <drew....@oracle.com>
> ... That led me to `process-list', which I imagine you
> can use to get what you want.
These are for processes that Emacs launched. Other processes
running on the system will not show.
\________________________________________________________/
In a shell, inside Emacs, I can run
open /Applications/ChessJK/ScidvsMac.app
However, I don't think this counts as launching-from-Emacs, and
the ScidvsMac process does not show up in (process-list).
Running `apropos' on "mac", and on "process", I did find
`mac-process-activate', but this doesn't seem to be what I need.
So... If I wanted to "launch" ScidvsMac (a chess database program)
from Emacs, under Mac OS, how would I do it?
Thanks again, everyone. -Jonathan
^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: Detecting a running process in Elisp
2013-07-26 23:18 ` gentsquash
@ 2013-07-26 23:57 ` Drew Adams
2013-07-27 8:48 ` Eli Zaretskii
` (2 subsequent siblings)
3 siblings, 0 replies; 16+ messages in thread
From: Drew Adams @ 2013-07-26 23:57 UTC (permalink / raw)
To: gentsquash, help-gnu-emacs
> I had run `apropos' on "shell" and "command", but inexplicably didn't
> run it on "process". When I did that now, I didn't see -in Emacs22-
> a cmd for listing the system processes.
You probably did this anyway, but just a reminder that there are
several apropos commands, in particular besides `apropos-command'.
In this case you don't want to look only for Emacs *commands* with
`process' in the name; you want to look for functions in general, and
perhaps even variables too.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
2013-07-26 20:57 ` Pascal J. Bourguignon
@ 2013-07-27 7:43 ` Eli Zaretskii
0 siblings, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2013-07-27 7:43 UTC (permalink / raw)
To: help-gnu-emacs
> From: "Pascal J. Bourguignon" <pjb@informatimago.com>
> Date: Fri, 26 Jul 2013 22:57:39 +0200
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> >> From: "Pascal J. Bourguignon" <pjb@informatimago.com>
> >> Date: Fri, 26 Jul 2013 18:58:15 +0200
> >>
> >> > There's list-system-processes to list all of the processes, and
> >> > process-attributes to examine their attributes, including name,
> >> > command line, etc.
> >>
> >> And what is the function to lock the system so that the list of PIDs
> >> returned by list-system-processes is consistent with the actual
> >> processes in the system when you call process-attributes on them?
> >
> > How is this relevant to the OP's question?
>
> It is relevant to the answer, to the proposed API.
Fair enough, then please explain what problem(s) you have in mind.
If you are thinking about a process that was alive when
list-system-processes was called, but is no longer there when
process-attributes is called for its PID, the process-attributes is
already immune to that: it will return nil.
In general, any method that walks the list of the processes, querying
the OS about each one, is prone to the same issues. The only way to
avoid that is to have a system call that will produce a single
coherent snapshot of the processes, together with every one of their
attributes you will ever want to know about. If the OS doesn't
provide such a system call, there's nothing an application can do
better than cope with processes that disappear during the walk.
And, FWIW, "ps -A" does not "lock" the system, either, so it suffers
from the same issues.
In practical terms, such "disappearing" processes are not a concern,
since they are not different from a process that exited just before
you called list-system-processes. Unless you want to write an OS
monitor in Emacs Lisp, this shouldn't bother you.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
2013-07-26 23:18 ` gentsquash
2013-07-26 23:57 ` Drew Adams
@ 2013-07-27 8:48 ` Eli Zaretskii
2013-07-27 9:07 ` Peter Dyballa
2013-07-27 10:20 ` Pascal J. Bourguignon
3 siblings, 0 replies; 16+ messages in thread
From: Eli Zaretskii @ 2013-07-27 8:48 UTC (permalink / raw)
To: help-gnu-emacs
> Date: Fri, 26 Jul 2013 16:18:42 -0700 (PDT)
> From: gentsquash@gmail.com
>
> Thanks, all, for your replies. I realize that I didn't give
> enough information. I'm running
>
> GNU Emacs 22.3.1 (i386-apple-darwin9.8.0, Carbon Version 1.6.0)
>
> under Mac OS. It appears there is no `list-system-processes' in Emacs22.
Indeed. Why not upgrade?
> Eli Zaretskii
> > From: Drew Adams <drew....@oracle.com>
> > ... That led me to `process-list', which I imagine you
> > can use to get what you want.
>
> These are for processes that Emacs launched. Other processes
> running on the system will not show.
> \________________________________________________________/
>
>
> In a shell, inside Emacs, I can run
>
> open /Applications/ChessJK/ScidvsMac.app
>
> However, I don't think this counts as launching-from-Emacs
It doesn't. Emacs subprocesses are those created by call-process,
call-process-region, and start-process.
> So... If I wanted to "launch" ScidvsMac (a chess database program)
> from Emacs, under Mac OS, how would I do it?
Use start-process. There are commands that use that, from Dired, for
example.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
2013-07-26 23:18 ` gentsquash
2013-07-26 23:57 ` Drew Adams
2013-07-27 8:48 ` Eli Zaretskii
@ 2013-07-27 9:07 ` Peter Dyballa
2013-07-27 10:20 ` Pascal J. Bourguignon
3 siblings, 0 replies; 16+ messages in thread
From: Peter Dyballa @ 2013-07-27 9:07 UTC (permalink / raw)
To: gentsquash; +Cc: help-gnu-emacs
Am 27.07.2013 um 01:18 schrieb gentsquash@gmail.com:
> [Aside: I've been quite happy with Carbon Emacs, but my understanding
> is that it is no longer updated. Is there a recommended version of
> Emacs23 (or 24?) for Mac users who are used to Carbon Emacs?]
Carbon Emacs is dead. Since years. There are some compiled versions of the NS variants of GNU Emacs 24.3 and 24.3.50 (development version) around. Aquamacs Emacs is among them. The best approach, IMO, is to get the sources of GNU Emacs 24.3 and then apply the patches from YAMAMOTO Mitsuharu, available from /ftp:anonymous@ftp.math.s.chiba-u.ac.jp:/emacs (TRAMP syntax), to compile the "AppKit" variant with a much deeper integration into Mac OS X.
--
Greetings
Pete
Claiming that the Macintosh is inferior to Windows because most people use Windows, is like saying that all other restaurants serve food that is inferior to McDonald's.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Detecting a running process in Elisp
2013-07-26 23:18 ` gentsquash
` (2 preceding siblings ...)
2013-07-27 9:07 ` Peter Dyballa
@ 2013-07-27 10:20 ` Pascal J. Bourguignon
3 siblings, 0 replies; 16+ messages in thread
From: Pascal J. Bourguignon @ 2013-07-27 10:20 UTC (permalink / raw)
To: help-gnu-emacs
gentsquash@gmail.com writes:
> Thanks, all, for your replies. I realize that I didn't give
> enough information. I'm running
>
> GNU Emacs 22.3.1 (i386-apple-darwin9.8.0, Carbon Version 1.6.0)
>
> under Mac OS. It appears there is no `list-system-processes' in Emacs22.
Well emacs hasn't been updated for Mac OS for at least 13 years now.
You're really using an old system.
Now if you mean Mac OS X (i386-apple-darwin9.8.0), then my advice is to
use http://www.emacsformacosx.com/
--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.
You know you've been lisping too long when you see a recent picture of George
Lucas and think "Wait, I thought John McCarthy was dead!" -- Dalek_Baldwin
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2013-07-27 10:20 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-26 15:26 Detecting a running process in Elisp gentsquash
2013-07-26 15:37 ` Eli Zaretskii
2013-07-26 15:50 ` Drew Adams
2013-07-26 15:54 ` Eli Zaretskii
[not found] ` <<83siz1z58a.fsf@gnu.org>
2013-07-26 16:17 ` Drew Adams
2013-07-26 18:49 ` Eli Zaretskii
[not found] ` <<83mwp9yx5f.fsf@gnu.org>
2013-07-26 18:54 ` Drew Adams
[not found] ` <mailman.1854.1374853118.12400.help-gnu-emacs@gnu.org>
2013-07-26 16:58 ` Pascal J. Bourguignon
2013-07-26 18:33 ` Eli Zaretskii
[not found] ` <mailman.1870.1374863596.12400.help-gnu-emacs@gnu.org>
2013-07-26 20:57 ` Pascal J. Bourguignon
2013-07-27 7:43 ` Eli Zaretskii
2013-07-26 23:18 ` gentsquash
2013-07-26 23:57 ` Drew Adams
2013-07-27 8:48 ` Eli Zaretskii
2013-07-27 9:07 ` Peter Dyballa
2013-07-27 10:20 ` Pascal J. Bourguignon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).