23,121
社区成员
发帖
与我相关
我的任务
分享
int Open(const char *pathname,int oflag,...){
int fd;
va_list ap;
mode_t mode;
if(oflag & O_CREAT){
va_start(ap,oflag);
mode=va_arg(ap,va_mode_t);
if((fd=open(pathname,oflag,mode))==-1)
err_sys("open error for %s",pathname);
va_end(ap);
}
else{
if((fd=open(pathname,oflag))==-1)
err_sys("open error for %s",pathname);
}
return(fd);
}
/**
* @file myopen.c
* @brief
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <stdarg.h>
int Open(const char *path, int oflag, ...)
{
int fd;
mode_t mode;
va_list ap;
mode = 0;
if (oflag & O_CREAT) {
va_start(ap, oflag);
mode = va_arg(ap, mode_t);
va_end(ap);
}
if ((fd = open(path, oflag, mode)) < 0) {
fprintf(stderr, "open %s: %s\n", path, strerror(errno));
exit(1);
}
return fd;
}
int
main(int argc, char *argv[])
{
int fd;
fd = Open("/hello.c", O_CREAT, 0666);
return 0;
}