【发布时间】:2016-11-13 19:02:36
【问题描述】:
Open() 系统调用在此代码中不起作用。但是,如果不与目录指针组合使用,它们可以正常工作。在这里,我使用 file->d_name 访问字符串基地址以打开文件,但它不起作用并打印错误。
#include<stdio.h>
#include<string.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<dirent.h>
#include<unistd.h>
#include<sys/dir.h>
int main()
{
DIR* d=opendir("DDD");
struct dirent* file;
int fd;
char WBUFFER[]="IO OS system calls\n";
char RBUFFER[100001];
while((file=readdir(d))!=NULL)
if(strlen(file->d_name)>=10)
{
if((fd=open(file->d_name,O_RDWR,0))==-1)
printf("error\n");
read(fd,RBUFFER,101);
printf("%s",RBUFFER);
close(fd);
}
else if(strlen(file->d_name)>=3)
{
if((fd=open(file->d_name,O_RDWR,0))==-1)
printf("error2\n");
write(fd,WBUFFER,50);
close(fd);
}
}
【问题讨论】:
标签: c linux system-calls