|
|
1.1 ! root 1: .TH PROC 4 ! 2: .CT 2 proc_man ! 3: .SH NAME ! 4: proc \- process file system ! 5: .SH SYNOPSIS ! 6: .B #include <sys/types.h> ! 7: .B #include <sys/proc.h> ! 8: .br ! 9: .B #include <sys/pioctl.h> ! 10: .SH DESCRIPTION ! 11: .I Proc ! 12: is a file system that contains memory images of each ! 13: running process in the system. ! 14: The name of each entry in the ! 15: .F /proc ! 16: directory is the process ! 17: id of the subject process, expressed in decimal with ! 18: optional leading zeros. ! 19: Each process file is owned by the userid of the subject process. ! 20: The file mode includes read and write permission for ! 21: the owner if that userid has read ! 22: access to the associated text file; all other permission bits ! 23: are zero. ! 24: The file size is ! 25: the sum of the sizes of virtual memory segments ! 26: in the subject process. ! 27: .PP ! 28: The subject process is unaffected, except that setuid bits ! 29: will be ignored if it does an ! 30: .IR exec (2). ! 31: (Setuid bits are also ignored if the ! 32: .IR exec "ing" ! 33: process has traced signals, or stops on ! 34: .IR exec ; ! 35: see the description of ! 36: .B PIOCSMASK ! 37: and ! 38: .B PIOCSEXEC ! 39: below.) ! 40: .PP ! 41: Data may be transferred ! 42: from or to any locations in the subject's address space through ! 43: .IR lseek (2), ! 44: .IR read (2), ! 45: and ! 46: .IR write . ! 47: The ! 48: .I text segment ! 49: begins at address 0; the ! 50: .I data segment ! 51: starts above the text. ! 52: The ! 53: .I user area ! 54: extends downward below address 0x80000000, and is ! 55: .B UPAGES*NBPG ! 56: bytes long (see the header files listed below); ! 57: the ! 58: .I stack segment ! 59: grows downward below the user area. ! 60: The text, data, and stack sizes ! 61: may be determined from the process's ! 62: .L proc ! 63: structure (see ! 64: .B PIOCGETPR ! 65: below). ! 66: It is an error to access addresses between data and stack. ! 67: No read or write may span a segment boundary; ! 68: in the user area only the locations of saved user registers ! 69: are writable. ! 70: .PP ! 71: .IR Ioctl (2) ! 72: calls control the subject process. ! 73: The third argument usually points to an integer. ! 74: The ! 75: .I ioctl ! 76: codes are: ! 77: .TF PIOCSMASK ! 78: .TP ! 79: .B PIOCSTOP ! 80: Send signal ! 81: .B SIGSTOP ! 82: to the process, and wait for it to ! 83: enter the stopped state. ! 84: .TP ! 85: .B PIOCWSTOP ! 86: Wait for the process to stop. ! 87: .TP ! 88: .B PIOCRUN ! 89: Make the process runnable again after a stop. ! 90: .TP ! 91: .B PIOCSMASK ! 92: Define ! 93: a set of signals to be traced. ! 94: The process will stop when it receives any signal whose number, ! 95: as given in ! 96: .IR signal (2), ! 97: corresponds to a 1-bit in the given integer, ! 98: with the least significant bit counted as 1. ! 99: The traced state and mask bits are inherited by the child of a ! 100: .IR fork (2). ! 101: When the process file is closed, the mask becomes zero, but ! 102: the traced state persists. ! 103: .TP ! 104: .B PIOCSEXEC ! 105: Cause the process to stop after ! 106: .IR exec (2). ! 107: This condition is inherited across ! 108: .IR fork (2) ! 109: and persists when the process file is closed. ! 110: .TP ! 111: .B PIOCREXEC ! 112: Reverse the effect of ! 113: .BR PIOCSEXEC . ! 114: .TP ! 115: .B PIOCCSIG ! 116: Clear the subject's currently pending signal (if any). ! 117: .TP ! 118: .B PIOCKILL ! 119: Set the subject's currently pending signal to a given number. ! 120: .TP ! 121: .B PIOCOPENT ! 122: Return a read-only file descriptor ! 123: for the subject process's text file. ! 124: (Thus a debugger can find the ! 125: symbol table without knowing the name of the text file.) ! 126: .TP ! 127: .B PIOCNICE ! 128: Increment the ! 129: priority of the subject process by a given amount ! 130: as if by ! 131: .IR nice (2). ! 132: .TP ! 133: .B PIOCGETPR ! 134: Copy the subject's ! 135: .B proc ! 136: structure (see ! 137: .BR <sys/proc.h> ) ! 138: from the kernel process table into an area pointed to ! 139: the third argument. ! 140: (This information, which resides in system space, is not accessible ! 141: via a normal read.) ! 142: .PD ! 143: .PP ! 144: Any system call is guaranteed to be atomic with respect to the ! 145: subject process, ! 146: but nothing prevents more than one ! 147: process from opening and controlling the same subject. ! 148: .PP ! 149: The following header files are useful in analyzing ! 150: .I proc ! 151: files: ! 152: .PP ! 153: .TF <sys/param.h> ! 154: .TP ! 155: .B <signal.h> ! 156: list of signal numbers ! 157: .TP ! 158: .B <sys/param.h> ! 159: size parameters ! 160: .TP ! 161: .B <sys/types.h> ! 162: special system types ! 163: .TP ! 164: .B <sys/user.h> ! 165: user structure ! 166: .TP ! 167: .B <sys/proc.h> ! 168: proc structure ! 169: .TP ! 170: .B <sys/reg.h> ! 171: locations of saved user registers ! 172: .TP ! 173: .B <sys/pioctl.h> ! 174: ioctl codes for ! 175: .I proc ! 176: files ! 177: .PD ! 178: .SH FILES ! 179: .F /proc/* ! 180: .SH SEE ALSO ! 181: .IR adb (1), ! 182: .IR ps (1), ! 183: .IR hang (1), ! 184: .IR fmount (2), ! 185: .IR signal (2), ! 186: .IR mount (8), ! 187: .IR pi (9.1) ! 188: .SH DIAGNOSTICS ! 189: These errors can occur in addition to the ! 190: errors normally associated with the file system; see ! 191: .IR intro (2): ! 192: .TF ENOENT ! 193: .TP ! 194: .B ENOENT ! 195: The subject process has exited. ! 196: .TP ! 197: .B EIO ! 198: The subject process has attempted I/O at an illegal address. ! 199: .TP ! 200: .B EBUSY ! 201: The subject is in the midst of changing virtual memory ! 202: attributes, or has pages locked for physical I/O. ! 203: .TP ! 204: .B ENOSPC ! 205: A write has been attempted on a shared text segment and there ! 206: is no room on the swap space to make a copy. ! 207: .TP ! 208: .B EPERM ! 209: A non-super-user has attempted to better ! 210: the subject's priority with ! 211: .BR PIOCNICE . ! 212: .SH BUGS ! 213: A process must be swapped in for reading and writing (but not ! 214: .IR ioctl ); ! 215: this may cause ! 216: a noticeable delay. ! 217: .br ! 218: The spectrum of states which result in ! 219: .B EBUSY ! 220: is too conservative. ! 221: .br ! 222: A process loaded from a text file with magic number 0407 does not have as ! 223: a read-only text segment; in this (presumably rare) case ! 224: .B PIOCOPENT ! 225: does not work, and the process is accessible even if the ! 226: text file is read-only. ! 227: .br ! 228: The interface involves too many VAX-specific magic numbers.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.