[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Reading from pipes directly with a process-filter

From: Eli Zaretskii
Subject: Re: Reading from pipes directly with a process-filter
Date: Sat, 14 Jan 2023 08:56:46 +0200

> From: Peter <emacs@nexoid.at>
> Cc: emacs-devel@gnu.org
> Date: Fri, 13 Jan 2023 22:51:04 +0100
> >> I've been slowly sliding into using Emacs more and more like a Lisp OS,
> >> so one thing that has come up is directly reading data from pipes or
> >> special devices (like /dev/input/event...). I can do that fine by
> >> running `start-process' with `cat /dev/input/event..', however that
> >> seems a bit wasteful. Is there any way to *directly* open such a file
> >> and put a process-filter in front of it?
> >
> > Did you try to use make-pipe-process?
> No, but from my understanding, this will also not read the file
> directly, but run an extra process.

I don't think I understand what you are saying.  make-pipe-process
doesn't create any OS-level process, it creates only an Emacs process
object, similarly to what make-network-process does.

> >> Semi-relatedly, is there any support for `fnctl' or `ioctl' in elisp, so
> >> that I could even *write* to those special devices?
> >
> > Doesn't a simple 'write' (a.k.a. write-region in Emacs) work?  If not,
> > can you show a recipe that fails with all the details?
> For example https://www.kernel.org/doc/html/v4.12/input/uinput.html
> shows how to write events to uinput. The function emit does the writing
> (the encoding can easily be done with bindat in Emacs), however it isn't
> sufficient to just *write* events, but some metadata must be set via
> ioctl (yea, "everything is a file" ... except for so many things...).
> This is not a "normal" use-case for Emacs, however I've been playing
> around with running Emacs on the Pinephone, and this would help with the
> vibrator for notifications, for example.
> Of course this could also be done in C code from a module, but if Emacs
> already somehow has support for doing this "directly", that'd be even
> greater ;)

Sounds like a job for a dynamic module, not for something that has to
be in the Emacs core.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]