|
|
1.1 ! root 1: /* Definitions for asynchronous process control in GNU Emacs. ! 2: Copyright (C) 1985 Richard M. Stallman. ! 3: ! 4: This file is part of GNU Emacs. ! 5: ! 6: GNU Emacs is distributed in the hope that it will be useful, ! 7: but WITHOUT ANY WARRANTY. No author or distributor ! 8: accepts responsibility to anyone for the consequences of using it ! 9: or for whether it serves any particular purpose or works at all, ! 10: unless he says so in writing. Refer to the GNU Emacs General Public ! 11: License for full details. ! 12: ! 13: Everyone is granted permission to copy, modify and redistribute ! 14: GNU Emacs, but only under the conditions described in the ! 15: GNU Emacs General Public License. A copy of this license is ! 16: supposed to have been given to you along with GNU Emacs so you ! 17: can know your rights and responsibilities. It should be in a ! 18: file named COPYING. Among other things, the copyright notice ! 19: and this notice must be preserved on all copies. */ ! 20: ! 21: ! 22: /* ! 23: * Structure records pertinent information about open channels. ! 24: * There is one channel associated with each process. ! 25: */ ! 26: ! 27: struct Lisp_Process ! 28: { ! 29: int size; ! 30: struct Lisp_Vector *v_next; ! 31: /* Descriptor by which we read from this process */ ! 32: Lisp_Object infd; ! 33: /* Descriptor by which we write to this process */ ! 34: Lisp_Object outfd; ! 35: /* Name of this process */ ! 36: Lisp_Object name; ! 37: /* List of command arguments that this process was run with */ ! 38: Lisp_Object command; ! 39: /* (funcall FILTER PROC STRING) (if FILTER is non-nil) ! 40: to dispose of a bunch of chars from the process all at once */ ! 41: Lisp_Object filter; ! 42: /* (funcall SENTINEL PROCESS) when process state changes */ ! 43: Lisp_Object sentinel; ! 44: /* Buffer that output is going to */ ! 45: Lisp_Object buffer; ! 46: /* Number of this process */ ! 47: Lisp_Object pid; ! 48: /* Non-nil if this is really a command channel */ ! 49: Lisp_Object command_channel_p; ! 50: /* Non-nil if this is really a child process */ ! 51: Lisp_Object childp; ! 52: /* The state of the process, expressed by flags ! 53: (RUNNING, STOPPED, etc.) */ ! 54: Lisp_Object flags; ! 55: /* # of signal that the process got, that stopped it, ! 56: or code it exited with. */ ! 57: Lisp_Object reason; ! 58: /* Marker set to end of last buffer-inserted output from this process */ ! 59: Lisp_Object mark; ! 60: /* Non-nil means kill silently if Emacs is exited. */ ! 61: Lisp_Object kill_without_query; ! 62: }; ! 63: ! 64: /* Process status, found in the flags component */ ! 65: #define PROC_STATUS 3 ! 66: ! 67: /* Values of process status */ ! 68: #define RUNNING 0 /* process is running */ ! 69: #define STOPPED 1 /* process has stopped */ ! 70: #define EXITED 2 /* process has exited */ ! 71: #define SIGNALED 3 /* process was signalled */ ! 72: ! 73: /* Additional bits in the flags component */ ! 74: #define CHANGED 4 /* This bit is set when state changes; ! 75: cleared when a change message has been given */ ! 76: #define COREDUMPED 8 /* This bit is set if core was dumped */ ! 77: ! 78: ! 79: #define ChannelMask(n) (1<<(n))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.