diff options
author | Ulrich Drepper <drepper@redhat.com> | 1996-12-20 01:39:50 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1996-12-20 01:39:50 +0000 |
commit | 6d52618b15cbe25ed4822ac51321db292f28ccda (patch) | |
tree | bafef072c0f5cb67c09d7c1789888d4310ac568f /manual/job.texi | |
parent | 10dc2a90b7f86d9bc1be9d1b9305a781882f7ac5 (diff) | |
download | glibc-6d52618b15cbe25ed4822ac51321db292f28ccda.zip glibc-6d52618b15cbe25ed4822ac51321db292f28ccda.tar.gz glibc-6d52618b15cbe25ed4822ac51321db292f28ccda.tar.bz2 |
Update from main archive 961219cvs/libc-961220
Thu Dec 19 23:28:33 1996 Ulrich Drepper <drepper@cygnus.com>
* resolv/resolv.h: Update from BIND 4.9.5-P1.
* resolv/res_comp.c: Likewise.
* resolv/res_debug.c: Likewise.
* resolv/Banner: Update version number.
Thu Dec 19 20:58:53 1996 Ulrich Drepper <drepper@cygnus.com>
* elf/dlfcn.h: Add extern "C" wrapper.
* io/utime.h: Don't define NULL since this isn't allowed in POSIX.
* io/sys/stat.h: Declare `lstat' only if __USE_BSD ||
__USE_XOPEN_EXTENDED.
* locale/locale.h: Define NULL.
* math/math.c: Don't include <errno.h> to define math errors.
* stdlib/stdlib.h: Likewise.
* posix/unistd.h: Don't declare environ.
* posix/sys/utsname.h (struct utsname): Declare member domainname
as __domainname is !__USE_GNU.
* signal/signal.h: Declare size_t only if __USE_BSD ||
__USE_XOPEN_EXTENDED.
* stdio/stdio.h: Don't declare cuserid when __USE_POSIX, but
instead when __USE_XOPEN.
* string/string.h: Define strndup only if __USE_GNU.
* sysdeps/unix/sysv/linux/clock.c: New file.
* sysdeps/unix/sysv/linux/timebits.h: Define CLOCKS_PER_SEC as
1000000 per X/Open standard.
* features.h: Add code to recognize _POSIX_C_SOURCE value 199309.
Define __USE_POSIX199309.
* posix/unistd.h: Declare fdatasync only if __USE_POSIX199309.
* time/time.c: Declare nanosleep only if __USE_POSIX199309.
Patches by Rüdiger Helsch <rh@unifix.de>.
* locale/locale.h: Add declaration of newlocale and freelocale.
* new-malloc/Makefile (distibute): Add mtrace.awk.
(dist-routines): Add mcheck and mtrace.
(install-lib, non-lib.a): Define as libmcheck.a.
* new-malloc/malloc.h: Add declaration of __malloc_initialized.
* new-malloc/mcheck.c: New file.
* new-malloc/mcheck.h: New file.
* new-malloc/mtrace.c: New file.
* new-malloc/mtrace.awk: New file.
* posix/unistd.h: Correct prototype for usleep.
* sysdeps/unix/bsd/usleep.c: De-ANSI-declfy. Correct return type.
* sysdeps/unix/sysv/linux/usleep.c: Real implementation based on
nanosleep.
* signal/signal.h: Change protoype of __sigpause to take two
arguments. Remove prototype for sigpause. Add two different
macros named sigpause selected when __USE_BSD or __USE_XOPEN
are defined. This is necessary since the old BSD definition
of theis function collides with the X/Open definition.
* sysdeps/posix/sigpause.c: Change function definition to also
fit X/Open definition.
* sysdeps/libm-i387/e_exp.S: Make sure stack is empty when the
function is left.
* sysdeps/libm-i387/e_expl.S: Likewise.
Patch by HJ Lu.
1996-12-17 Paul Eggert <eggert@twinsun.com>
* many, many files: Spelling corrections.
* catgets/catgetsinfo.h (mmapped):
Renamed from mmaped (in struct catalog_info.status).
* mach/err_kern.sub (err_codes_unix), string/stratcliff.c (main):
Fix spelling in message.
* po/libc.pot: Fix spelling in message for `zic'; this anticipates
a fix in the tzcode distribution.
Wed Dec 18 15:48:02 1996 Ulrich Drepper <drepper@cygnus.com>
* time/strftime.c: Implement ^ flag to cause output be converted
to use upper case characters.
* time/zic.c: Update from ADO tzcode1996n.
Wed Dec 18 14:29:24 1996 Erik Naggum <erik@naggum.no>
* time/strftime.c (add): Don't change global `i' until all is over.
Define NULL is not already defined.
Tue Dec 17 09:49:03 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libio/iovsprintf.c (_IO_vsprintf): Change `&sf' to `&sf._sbf._f'
to avoid the need for a cast.
* libio/iovsscanf.c (_IO_vsscanf): Likewise.
* sunrpc/rpc/xdr.h: Add prototype for xdr_free.
Diffstat (limited to 'manual/job.texi')
-rw-r--r-- | manual/job.texi | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/manual/job.texi b/manual/job.texi index 1ac15ff..f97aceb 100644 --- a/manual/job.texi +++ b/manual/job.texi @@ -54,7 +54,7 @@ terminate all the processes in the foreground process group. @cindex session A @dfn{session} is a larger group of processes. Normally all the -proccesses that stem from a single login belong to the same session. +processes that stem from a single login belong to the same session. Every process belongs to a process group. When a process is created, it becomes a member of the same process group and session as its parent @@ -154,7 +154,7 @@ calls @code{setsid} to become the leader of a new session. @cindex controlling terminal, access to Processes in the foreground job of a controlling terminal have -unrestricted access to that terminal; background proesses do not. This +unrestricted access to that terminal; background processes do not. This section describes in more detail what happens when a process in a background job tries to access its controlling terminal. @@ -213,7 +213,7 @@ involved. @iftex @itemize @bullet -@item +@item @ref{Data Structures}, introduces the example and presents its primary data structures. @@ -310,7 +310,7 @@ job * find_job (pid_t pgid) @{ job *j; - + for (j = first_job; j; j = j->next) if (j->pgid == pgid) return j; @@ -324,7 +324,7 @@ int job_is_stopped (job *j) @{ process *p; - + for (p = j->first_process; p; p = p->next) if (!p->completed && !p->stopped) return 0; @@ -338,7 +338,7 @@ int job_is_completed (job *j) @{ process *p; - + for (p = j->first_process; p; p = p->next) if (!p->completed) return 0; @@ -355,7 +355,7 @@ job_is_completed (job *j) When a shell program that normally performs job control is started, it has to be careful in case it has been invoked from another shell that is -already doing its own job control. +already doing its own job control. A subshell that runs interactively has to ensure that it has been placed in the foreground by its parent shell before it can enable job control @@ -413,7 +413,7 @@ int shell_is_interactive; void init_shell () @{ - + /* @r{See if we are running interactively.} */ shell_terminal = STDIN_FILENO; shell_is_interactive = isatty (shell_terminal); @@ -512,7 +512,7 @@ send a @code{SIGTSTP} signal to the process group of the process, not just to the process itself. @xref{Signaling Another Process}. Finally, each child process should call @code{exec} in the normal way. -This is also the point at which redirection of the standard input and +This is also the point at which redirection of the standard input and output channels should be handled. @xref{Duplicating Descriptors}, for an explanation of how to do this. @@ -564,9 +564,9 @@ launch_process (process *p, pid_t pgid, @{ dup2 (errfile, STDERR_FILENO); close (errfile); - @} - - /* @r{Exec the new process. Make sure we exit.} */ + @} + + /* @r{Exec the new process. Make sure we exit.} */ execvp (p->argv[0], p->argv); perror ("execvp"); exit (1); @@ -590,7 +590,7 @@ launch_job (job *j, int foreground) process *p; pid_t pid; int mypipe[2], infile, outfile; - + infile = j->stdin; for (p = j->first_process; p; p = p->next) @{ @@ -638,7 +638,7 @@ launch_job (job *j, int foreground) close (outfile); infile = mypipe[0]; @} - + format_job_info (j, "launched"); if (!shell_is_interactive) @@ -704,13 +704,13 @@ put_job_in_foreground (job *j, int cont) perror ("kill (SIGCONT)"); @} @end group - + /* @r{Wait for it to report.} */ wait_for_job (j); - + /* @r{Put the shell back in the foreground.} */ tcsetpgrp (shell_terminal, shell_pgid); - + @group /* @r{Restore the shell's terminal modes.} */ tcgetattr (shell_terminal, &j->tmodes); @@ -722,7 +722,7 @@ put_job_in_foreground (job *j, int cont) @cindex background job, launching If the process group is launched as a background job, the shell should remain in the foreground itself and continue to read commands from -the terminal. +the terminal. In the sample shell, there is not much that needs to be done to put a job into the background. Here is the function it uses: @@ -833,7 +833,7 @@ update_status (void) @{ int status; pid_t pid; - + do pid = waitpid (WAIT_ANY, &status, WUNTRACED|WNOHANG); while (!mark_process_status (pid, status)); @@ -849,11 +849,11 @@ wait_for_job (job *j) @{ int status; pid_t pid; - + do pid = waitpid (WAIT_ANY, &status, WUNTRACED); - while (!mark_process_status (pid, status) - && !job_is_stopped (j) + while (!mark_process_status (pid, status) + && !job_is_stopped (j) && !job_is_completed (j)); @} @end group @@ -880,7 +880,7 @@ do_job_notification (void) /* @r{Update status information for child processes.} */ update_status (); - + jlast = NULL; for (j = first_job; j; j = jnext) @{ @@ -976,7 +976,7 @@ allocated and initialized. Most real shells provide a complex user interface that has support for a command language; variables; abbreviations, substitutions, and pattern matching on file names; and the like. All of this is far too complicated -to explain here! Instead, we have concentrated on showing how to +to explain here! Instead, we have concentrated on showing how to implement the core process creation and job control functions that can be called from such a shell. @@ -1058,7 +1058,7 @@ represents the size of a string large enough to hold the file name returned by @code{ctermid}. @end deftypevr -See also the @code{isatty} and @code{ttyname} functions, in +See also the @code{isatty} and @code{ttyname} functions, in @ref{Is It a Terminal}. |