【问题标题】:FTP program where client requests for a file on the server客户端请求服务器上文件的 FTP 程序
【发布时间】:2013-04-11 17:05:32
【问题描述】:

我被分配了使用 FTP 编写 C 程序的任务,其中客户端向服务器请求指定文件名的文件,然后服务器将在所有目录中检查该文件,如果该文件存在,那么它将发送它否则一条错误消息,说“找不到文件!”将被发送。

我很难使用 find/whereis 命令,然后在我的程序中使用这些函数返回的结果。 我想知道如何在我的程序中使用linux系统命令。

现在,我只检查服务器的当前目录

int fd = open(file,O_RDONLY,0);
printf("opening file %s in current directory\n", filename);
if(fd == -1) {
    printf("error: file not found!\n");
    send_string(newfd, "file not found!");
}

如果您能帮我检查特定文件的所有目录,那就太好了!

【问题讨论】:

  • 这里是walk a directory的方法。它会帮助你:)
  • 哇,这是一个很大的帮助。谢谢@Bechir
  • 你的任务也是写服务器?

标签: c sockets networking ftp


【解决方案1】:

有很多方法。一种方法是递归地遍历从/ 开始的整个目录树 - 您可以使用 DFS 或任何类似的图形遍历算法来做到这一点。 另一种方法是使用Linux内置的find程序来搜索你。

【讨论】:

  • 我会喜欢使用 DFS 来完成它,因为我喜欢算法。但我应该使用 find 命令,这就是问题所在。究竟如何在 C 程序中使用它并利用它的结果?
  • 好吧,一种方法是启动新进程。将输出描述符重定向到某个管道或文件并调用 execve 并使用要查找的路径和您希望传递的参数。然后,您可以从管道或文件中读取其输出,具体取决于您选择的选项,并解析其输出。在这里您可以看到如何将描述符传递给 execve:stackoverflow.com/questions/7383142/…
  • 听起来不错。让我执行,然后我会回来。
猜你喜欢
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多