【问题标题】:Command that helps link programs?帮助链接程序的命令?
【发布时间】:2020-05-26 14:56:15
【问题描述】:

对不起,如果这个标题令人困惑,我不确定如何措辞,我写了这两个 C 程序在这里成功解释:

但是当我像教授告诉我们的那样去测试它们时,我得到了readin: Command not foundwriteout: Command not found,这是有道理的,因为通常在我编译(使用 GCC)之后,我会使用 ./ 运行程序,然后是该程序。我对他的意思感到困惑,是否有某种命令可以使这项工作?不幸的是,我的教授离线,我无法在网上找到任何关于它的信息。在 linux 操作系统上并使用 gcc -std=c99 编译这两个程序。非常感谢任何帮助!

【问题讨论】:

  • 是你的环境变量的问题。它与您的 C 程序无关。您的 shell 不会在当前路径中搜索可执行文件。要修复它,请在您的 shell 中运行 expose PATH=.:$PATH,然后您可以运行 readbin
  • 如果当前文件夹中确实存在 readin 和 writeout,那么您只需将命令行更改为 ./readin in.txt | ./writeout out.txt
  • @stensal 感谢您的回复,当我运行时,我也收到“expose:Command not found”。我正在 ssh'ing 到我的学校计算机并在那里运行这些命令,如果这些信息有帮助的话,这是 linux 操作系统。
  • @GemTaylor 我也是这么想的,但试过了,它让我的终端崩溃了哈哈
  • 应该是export 而不是expose,我的错。

标签: c linux gcc stdout stdin


【解决方案1】:

您需要检查当前目录. 是否包含在您的$PATH 环境变量中。

【讨论】:

  • 好的,谢谢,从包含所有文件的当前目录运行,对于我们所有的程序,我们不必弄乱环境变量,但也许他只是忘了提及,我会的查看感谢您提供的信息
  • 不要将. 放在您的可执行搜索路径中。这是一个安全隐患:如果攻击者可以将脚本或程序放入您使用的目录中,并且可以为其选择一个名称,即某个常用命令的名称(例如,通过提供您解压缩的 ZIP 存档),那么您可能会无意中执行他们的程序而不是预期的命令。然后该程序将以您的权限运行并且可以做恶意的事情。相反,只需修改老师的指示:使用./name 而不是name 运行程序。 (另外,如果您的讲师在他们的路径中有.,请告诉他们我说过要停止它。)
  • 好吧,很高兴知道也许这就是为什么我们不允许修改路径哈哈,我们通常用 ./ 运行我们的程序,不知道为什么他这次建议不同。不过谢谢你的回复,我不知道。
猜你喜欢
  • 1970-01-01
  • 2021-09-09
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多