1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <unistd.h>
4
#include <string.h>
5
#include <sys/wait.h>
6
7
8
void pr_exit(int status)
9

{
10
if(WIFEXITED(status))
11
printf("normal termination exit status=%d\n",WEXITSTATUS(status));
12
else if(WIFSIGNALED(status))
13
printf("abnormal termination,signal number=%d%s\n",WTERMSIG(status),
14
#ifdef WCOREDUMP
15
WCOREDUMP(status) ?" (core file gernerated) ":"");
16
#else
17
"");
18
#endif
19
else if(WIFSTOPPED(status))
20
printf("child stopped,signal number=%d\n",WSTOPSIG(status));
21
}
22
23
int main(int argc,char** argv)
24

{
25
int status;
26
char commd[255]="";
27
int i;
28
if(argc<2)
29
{
30
printf("command-line argument required\n");
31
return -1;
32
}
33
for(i=1;i<argc;i++)
34
{
35
strcat(commd,argv[i]);
36
commd[strlen(commd)]=' ';
37
}
38
if((status=system(commd))<0)
39
{
40
printf("Command error");
41
return -1;
42
}
43
44
pr_exit(status);
45
return 0;
46
}
47

2

3

4

5

6

7

8

9



10

11

12

13

14

15

16

17

18

19

20

21

22

23

24



25

26

27

28

29



30

31

32

33

34



35

36

37

38

39



40

41

42

43

44

45

46

47

程序有两个功能:
1. 使用system函数调用shell命令,shell命令在启动程序参数中给出。
2. shell程序退出时可以获得其退出状态。
以上程序是根据APUE里的例子来实现的。可以参考8.6和8.13节。