����14-36 linux/include/sys/wait.h
1 #ifndef _SYS_WAIT_H
2 #define _SYS_WAIT_H
3
4 #include <sys/types.h>
5
6 #define _LOW(v) ( (v) & 0377) // ȡ���ֽڣ�8���Ʊ�ʾ����
7 #define _HIGH(v) ( ((v) >> 8) & 0377) // ȡ���ֽڡ�
8
9 /* options for waitpid, WUNTRACED not supported */
/* waitpid��ѡ�����WUNTRACEDδ��֧�� */
// [ ע����ʵ0.12�ں��Ѿ�֧��WUNTRACEDѡ���������ע��Ӧ������ǰ�ں˰汾���������ġ� ]
// ���³��������Ǻ���waitpid(pid_t pid, long *stat_addr, int options)��optionsʹ�õ�ѡ�
10 #define WNOHANG 1 // ���û��״̬Ҳ��Ҫ���𣬲����̷��ء�
11 #define WUNTRACED 2 // ����ִֹͣ�е��ӽ���״̬��
12
// ���º궨�������ж�waitpid()�������ص�״̬�֣���20��21�еIJ���*stat_loc���ĺ��塣
13 #define WIFEXITED(s) (!((s)&0xFF) // ����ӽ��������˳�����Ϊ�档
14 #define WIFSTOPPED(s) (((s)&0xFF)==0x7F) // ����ӽ�����ֹͣ�ţ���Ϊtrue��
15 #define WEXITSTATUS(s) (((s)>>8)&0xFF) // �����˳�״̬��
16 #define WTERMSIG(s) ((s)&0x7F) // ���ص��½�����ֹ���ź�ֵ���ź�������
17 #define WCOREDUMP(s) ((s)&0x80) // �жϽ����Ƿ�ִ�����ڴ�ӳ��ת����dumpcore����
18 #define WSTOPSIG(s) (((s)>>8)&0xFF) // ���ص��½���ֹͣ���ź�ֵ��
19 #define WIFSIGNALED(s) (((unsigned int)(s)-1 & 0xFFFF) < 0xFF) // �������δ���źŶ�
// �����ӽ����˳���Ϊ�档
20
// wait()��waitpit()�����������̻�ȡ�����ӽ���֮һ��״̬��Ϣ������ѡ��������ȡ�Ѿ���ֹ��
// ֹͣ���ӽ���״̬��Ϣ������������������������ӽ��̵�״̬��Ϣ�����˳���Dz�ָ���ġ�
// wait()������ǰ���̣�ֱ�����ӽ���֮һ�˳�����ֹ���������յ�Ҫ����ֹ�ý��̵��źţ�
// ��������Ҫ����һ���źž�����źŴ�������
// waitpid()����ǰ���̣�ֱ��pidָ�����ӽ����˳�����ֹ�������յ�Ҫ����ֹ�ý��̵��źţ�
// ��������Ҫ����һ���źž�����źŴ�������
// ���pid= -1��options=0����waitpid()��������wait()����һ������������Ϊ����pid��options
// �����IJ�ͬ����ͬ�����μ�kernel/exit.c,142��
// ����pid�ǽ��̺ţ�*stat_loc�DZ���״̬��Ϣλ�õ�ָ�룻options�ǵȴ�ѡ�����10��11�С�
21 pid_t wait(int *stat_loc);
22 pid_t waitpid(pid_t pid, int *stat_loc, int options);
23
24 #endif
25