1 //http://blog.chinaunix.net/uid-24549279-id-71355.html
2 /*
3 ============================================================================
4 Name : test.c
5 Author : blank
6 Version :
7 Copyright : Your copyright notice
8 Description : 程序4-1 对每个命令行参数打印文件类型
9 ============================================================================
10 */
11
12 #include <stdio.h>
13 #include <sys/stat.h>
14 #include "ourhdr.h"
15
16 #define BUFFSIZE 4096
17
18 int main(int argc, char *argv[])
19 {
20 int i;
21 struct stat buf;
22 char *ptr;
23
24 for (i=1; i<argc; i++){
25 printf("%s: ", argv[i]);
26 if (lstat(argv[i], &buf) < 0){
27 err_ret("lstat error");
28 continue;
29 }
30
31 if (S_ISREG(buf.st_mode)){
32 ptr = "regular";
33 }else if(S_ISDIR(buf.st_mode)){
34 ptr = "directory";
35 }else if(S_ISCHR(buf.st_mode)){
36 ptr = "character special";
37 }else if(S_ISLNK(buf.st_mode)){
38 ptr = "symbolic link";
39 }else if (S_ISSOCK(buf.st_mode)){
40 ptr = "socket";
41 }else if(S_ISBLK(buf.st_mode)){
42 ptr = "block special";
43 }else if(S_ISFIFO(buf.st_mode)){
44 ptr = "FIFO";
45 }else{
46 ptr = "***unknown mode***";
47 }
48 printf("%s\n", ptr);
49 }
50 exit(0);
51 }