I'm helping someone to improve a CMS-type of web system. This web
system sometimes needs to run some background processes --- such as send
a batch of e-mail or other process that takes a while to finish.
I see the challenge here as just writing something that will look like a very basic UNIX shell --- so I'll call it ``web-api-shell'' from now on. (``Web'' because it will be used by a web system through some API.)
This thing must run really well. It has to be flawless. I'm looking
for design principles and advice.
(*) Where will it run
It will run on GNU systems running the Linux kernel.
(*) My own thoughts
The interface to shell will be through HTTP requests, so this shell will likely be a web server of some sort. But before I get involved in the
web at all, I need the shell working flawlessly.
So I need a laboratory first. I could write a program that reads some
named pipe on disk to get commands such as ``run this or that'' while I work. (Later I can write a web server replacing this named-pipe
interface.)
Just like a UNIX shell, this web-api-shell must know all every process
it runs. I suppose the work is essentially fork(), execve() followed by waitpid().
One concern I have is the following. Is it possible for a process to
simply ``get out of'' the shell? What do I mean by that? A process
that does fork() and puts itself into background would leave the web-api-shell's control, wouldn't it?
I think I must avoid that. Perhaps I can't let just any process run.
Perhaps the web-api-shell must only offer a few processes carefully
written by myself --- so that I know they won't put themselves in background. (For instance, I can't let them change PIDs, otherwise I
won't have any idea who they are and that's a mess. I'd love to somehow restrict system calls such as fork().)
(*) What is my level of training?
In the past I've studied many parts of
Advanced Programming in the UNIX Environment
W. Richard Stevens
I will definitely have to read it again to get work on this project.
Can you mention any UNIX concepts that are of great relevance for this project? I don't think I ever got my mind wrapped around things like sessions, session leaders and so on. Are these concepts relevant to
this application?
Thank you very much.
I'm helping someone to improve a CMS-type of web system. This web
system sometimes needs to run some background processes --- such as send
a batch of e-mail or other process that takes a while to finish.
I see the challenge here as just writing something that will look like a very basic UNIX shell --- so I'll call it ``web-api-shell'' from now on. (``Web'' because it will be used by a web system through some API.)
This thing must run really well. It has to be flawless. I'm looking
for design principles and advice.
(*) Where will it run<snip>
It will run on GNU systems running the Linux kernel.
(*) My own thoughts
The interface to shell will be through HTTP requests, so this shell will likely be a web server of some sort. But before I get involved in the
web at all, I need the shell working flawlessly.
So I need a laboratory first. I could write a program that reads some
named pipe on disk to get commands such as ``run this or that'' while I work. (Later I can write a web server replacing this named-pipe
interface.)
Just like a UNIX shell, this web-api-shell must know all every process
it runs. I suppose the work is essentially fork(), execve() followed by waitpid().
One concern I have is the following. Is it possible for a process to
simply ``get out of'' the shell? What do I mean by that? A process
that does fork() and puts itself into background would leave the web-api-shell's control, wouldn't it?
I think I must avoid that. Perhaps I can't let just any process run.
Perhaps the web-api-shell must only offer a few processes carefully
written by myself --- so that I know they won't put themselves in background. (For instance, I can't let them change PIDs, otherwise I
won't have any idea who they are and that's a mess. I'd love to somehow restrict system calls such as fork().)
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 296 |
Nodes: | 16 (2 / 14) |
Uptime: | 54:43:45 |
Calls: | 6,650 |
Calls today: | 2 |
Files: | 12,200 |
Messages: | 5,330,629 |