まず、ファイルを開き、dup2
を使用してファイル記述子をコピーします。なぜ、最初のファイル記述子が閉じても、もう1つのファイル記述子を使ってファイルを読み込めますか?推測でdup2はファイル記述子をコピーする以上のことをしていますか?
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int fd,fd2=7; /*7 can be any number < the max file desc*/
char buf[101];
if((fd = open(argv[1], O_RDONLY))<0) /*open a file*/
perror("open error");
dup2(fd,fd2); /*copy*/
close(fd);
if(read(fd2,buf,100)<0)
perror("read error");
printf("%s\n",buf);
return 0;
}
試しましたか?それは動作しましたか?もちろん、 –
です。 – sinners