# Controlling processes and what to "feed" other processes

**URL:** <https://www.ruby-forum.com/t/controlling-processes-and-what-to-feed-other-processes/168705>\
**Category:** Ruby\
**Created:** [May 24, 2009, 6:59pm UTC](https://www.ruby-forum.com/t/controlling-processes-and-what-to-feed-other-processes/168705 "2009-05-24T18:59:39Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![quik77](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/q/dec6dc/32.png) [@quik77](https://www.ruby-forum.com/u/quik77)\
**Post date:** [May 24, 2009, 6:59pm UTC](https://www.ruby-forum.com/t/controlling-processes-and-what-to-feed-other-processes/168705/1 "2009-05-24T18:59:39Z")

</div>

Hi,

alsa-driver has a slight error in its Makefile.  
The line in question is this here:

install -m 644 -g root -o root $f /usr/include/sound

Obviously it uses a specific name “root”, rather than the  
number 0.

On systems which do not have a superuser name called root,  
this will produce such an error:

install: invalid user `root’

Now, it is trivial to fix it (use numbers instead of fixed  
names like “root”, because the numbers always work. To  
reproduce sometimes odd behaviour you could alias root  
to another name, like in:

usermod -l new\_name root  
)

But - since I am using ruby scripts for fetching source and  
compiling it already, i wondered if there was a way to completely  
control processes like the above.  
In other words, my “watchguard” script would first check if a  
command is valid, before it tries to execute it (or feed to make,  
or some other binary).

In the above example it would simply change:

install -m 644 -g root -o root $f /usr/include/sound

to

install -m 644 -g 0 -o 0 $f /usr/include/sound

This seems like a trivial thing to do, although I have no  
real idea how to do this at all.

PS: I already have a somewhat buggyruby script which actually  
fixes incorrect Makefiles, but I thought that a ruby script  
which can actually sanitize the input “on-the-fly” and correct  
mistakes would be smarter and more powerful. So I am at  
least in theory curious how to approach this problem.

---

<div class="post-metadata">

**Author:** ![quik77](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/q/dec6dc/32.png) [@quik77](https://www.ruby-forum.com/u/quik77)\
**Post date:** [May 24, 2009, 7:41pm UTC](https://www.ruby-forum.com/t/controlling-processes-and-what-to-feed-other-processes/168705/2 "2009-05-24T19:41:13Z")

</div>

On 24.05.2009 18:59, Marc H. wrote:

> mistakes would be smarter and more powerful. So I am at  
> least in theory curious how to approach this problem.

For full control you would have to intercept system calls because you  
would need to manipulate files while they are read. It might be  
feasible but that would certainly very OS specific and it might not work  
on all operating systems.

If you know that all programs are started via a shell you could try to  
modify environment variable SHELL to point to a specific program which  
would be able to interpret the general syntax of the shell you are using  
and could identify files via their names (e.g. Makefile) and then do  
some manipulations. However, that approach is not without issues and  
you will certainly not be able to make it bullet proof.

Yet another solution: replace “make” with something you have written or  
at least have control over and which treats “root” properly.

I’m curios what others will come up with.

Kind regards

robert
