Well, not exactly Unix. This is one of those sites the permalink's of which i might not care much. If you see this in webarchive, or if it is just cached in your browser or your brain, please note that this is probably still available under some other path.
with signal function you can assign a handler function (or a constant saying that you
want to ignore or restore default behavior) to a signal. That function can do stuff like, sending that signal
to another process with kill instead and leaving the receiving process intact.
the kill function returns 0 on success, 1 on failure, and 64 if
you asked it to do a group of processes and for some it succeeded but for some
it did not.
the function strsignal returns strings such as Interrupt
for 2 (SIGINT).
I have not found a way to obtain the SIGINT
string, but that's probably not hard.
Email me if this here is still up and it says i have not found a way and you did, if you want to bother with being helpful.
get effective user ID of the user who owns the process of the program with geteuid function
get the struct passwd * for a user ID by using getpwuid function.
from struct passwd * you can get ->pw_name (username), ->pw_dir (home directory path)
you can also get struct passwd * by username by using getpwnam function.
you can get your current working directory using the function getcwd.
don't use the deprecated getwd, which does not allow to specify the size of your buffer,
and can cause error of writing beyond the end of your allocated buffer
there is also a GNU-specific get_current_dir_name function, which will allocate the string for you,
note that you will have to free it.
one neat trick is to just arithmetically negate the return value of chdir since
it can return only 0 or -1 anyway. Note: really, look at what the error was, see the errno
errnoerrno is a global variable that stores the error of last thing that failed that uses it.
in <errno.h> you can find not only them by their names, but also
functions like strerror which will give you a neat description string for an errno.
forkthe function fork forks your program (process) into two
processes. To one it
returns zero (the new one, the child), and to the other (the parent,
the original one) it returns the new process ID of the child.
If there was an error, it returns -1, and you can see the error in errno.
waitpidthe function waitpid will make your program process wait until the process that you called it about
will terminate. or, if you ask it to, also if it will stop. and if you ask, also if it gets continued.
default is just about termination. look up its manual for info about a bunch of macros
that will tell you what does the status value that waitpid wrote for you really means,
like WIFEXITED whether it exited normally, WEXITSTATUS with what exit code;
WIFSIGNALED whether by unhandled signal, WTERMSIG from what signal.
exec*the exec* functions replace the current process image with new process image
, like from an executable file.
the function execvp and execv take just the filename and the arguments list.
the ones ending with «e» also take a table of KEY=value environment variable entries. but they are inherited besides that.
the ones with «p» differ from the ones without in that they will also, for relative filepaths,
look in all the directories specified in the PATH variable.