#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
#include <unistd.h>
void usage(void){
fprintf(stderr,"usage:mknod <path>{b|c|u|p]","<major><minor>\n");
exit(1);
}
int main(int argc,const char **argv){
int major=0,minor=0;
const char *path;
int mode=0666;
char *end;
int args;
if(argc<3)usage();
path=argv[1];
if(!strcmp(argv[2],"b")){
mode|=S_IFBLK;
args=5;
}else if(!strcmp(argv[2],"c")||!strcmp(argv[2],"u")){
mode|=S_IFCHR;
args=5;
}else if(!strcmp(argv[2],"p")){
mode|=S_IFIFO;
args=3;
}else{
fprintf(stderr,"unknown node type %s\n",argv[2]);
return 1;
}
if(argc!=args)usage();
if(args==5){
major=strtol(argv[3],&end,0);
if(*end){
fprintf(stderr,"bad major number %s\n",argv[3]);
return 1;
}
minor=strtol(argv[4],&end,0);
if(*end){
fprintf(stderr,"bad minor number %s\n",argv[4]);
return 1;
}
}
if(mknod(path,mode,makedev(major,minor))){
fprintf(stderr,"mknod failed:%s\n",strerror(errno));
return 1;
}
return 0;
}
该程序是建立管道的,但俺有几句看不懂,不知其作用是什么?求各位老大解答:
mode|=S_IFCHR;这几句的作用是什么啊?俺想了很久了唉,郁闷ing
