使用打开的文件描述符

时间:2015-11-06 19:57:28

标签: c linux file-descriptor

我有两个程序,其中一个是打开一个文件来读取,而另一个我试图从文件中读取:

第一个程序

http://example.com/webapps/api/add_token.php?token=%@&country=%@&timezone=%@

第二个程序:

fd = open("test.txt",O_RDONLY);
printf("%d\n",fd);
while(1);

在第二个程序中,我阅读了我在第一个程序中打印的内容。为什么这段代码不起作用?如何从程序nr 2中读取该文件描述符?

2 个答案:

答案 0 :(得分:3)

文件描述符对于该过程是唯一的。您还需要写入文件描述符。

答案 1 :(得分:2)

有几个问题:

  • fd = open("test.txt", O_RDONLY)打开文件进行阅读。如果我理解您要执行的操作,则需要创建该文件并将其打开以进行编写。那将是fd = open("test.txt", O_CREAT | O_WRONLY)
  • printf("%d\n",fd)显示文件句柄的值。虽然这可能对调试很有用,但我认为你想要一些写入文件句柄的东西。 write (fd, "hello", 5)更接近于此。
  • while(1);是一个无限的CPU忙循环。这不是很有用。

同样,第二个程序存在问题:

  • fd = scanf("%d",&fd)很特别。我想你想打开刚写的文件,不是吗?相反,fd = open("test.txt", O_RDONLY)
  • 经过更正后,程序可以将内容读入变量read (fd, sir, sizeof sir)

看看这些是否有帮助。

如果您不是主要处理文件中的二进制数据,则fopen()fprintf()库调用会更方便。