我有两个程序,其中一个程序打开一个文件进行读取,另一个程序则试图从文件中读取:
第一程序
fd = open("test.txt",O_RDONLY);
printf("%dn",fd);
while(1);
第二个程序:
char sir[100];
int fd, result;
scanf("%d",&fd);
rez = read(fd,((void*)sir), 2);
在第二个程序中,我阅读了我在第一个程序中打印的内容。为什么这个代码不起作用,我如何从程序nr 2的文件描述符中读取?
文件描述符对于进程是唯一的。此外,您还需要写入文件描述符。
有几个问题:
fd = open("test.txt", O_RDONLY)
打开文件进行读取。如果我理解你想做什么,你就想创建文件并打开它进行写作。那将是fd = open("test.txt", O_CREAT | O_WRONLY)
printf("%dn",fd)
显示文件句柄的值。虽然这可能对调试很有用,但我认为您需要写入文件句柄的内容。CCD_ 4更接近于此while(1);
是一个无限的CPU繁忙循环。这不是很有用
类似地,第二个程序也有问题:
- CCD_ 6具有特殊性。我想你想打开刚写的文件,不是吗?相反,
fd = open("test.txt", O_RDONLY)
- 经过校正后,程序可以将内容读取到变量
read (fd, sir, sizeof sir)
中
看看这些对你有没有帮助。
如果您不是主要处理文件中的二进制数据,那么fopen()
和fprintf()
库调用会更方便。