首页 > 解决方案 > 在 C 中创建 CLI 应用程序

问题描述

我想知道如何在 C 中制作一个“持续运行”的 CLI 应用程序。我的意思是,例如,我只想打开终端并键入关键字,然后程序中的函数就会执行。就像“ls”一样。当您键入 ls 时,它会列出当前目录的内容。同样,我想制作一个程序,在编译时它会在调用关键字的情况下执行某些内容。我不想用 ./example 运行可执行文件,而是让命令始终可用。我使用的编译器是 gcc。我已阅读需要创建目标文件,但我不知道如何使用它。

谢谢

标签: c

解决方案


我的意思是,例如,我只想打开终端并键入关键字,然后程序中的函数就会执行。

您的程序不必“持续运行”以便您能够在不指定路径的情况下调用它......您只需确保程序位于 PATH 中的目录之一中,或者相反,您的 PATH 环境变量包括您的程序所在的目录。

因此,假设您要编译hello.c成一个名为hello. 这是代码:

#include <stdio.h>

int main(void)    
{
  printf("Hello, world!\n");
  return 0;
}

所以你会像这样编译:

> gcc -o hello hello.c

现在您应该hello在当前目录中调用了一个可执行文件,您可以像这样运行它:

> ./hello

但是你只是想在hello任何地方打字,对吧?因此,您可以将当前目录添加到 PATH 环境变量中,例如:

> export PATH=$PATH:$PWD

这会将 的值(PWD一个包含当前目录的环境变量)添加到PATH,这是一个环境变量,其中包含 shell 将在其中查找可执行程序的目录列表。

如果要使该更改永久生效,则需要修改在启动所使用的任何 shell 时运行的脚本之一。这有点超出了这个答案的范围,并且有很多关于如何在线设置 PATH 的建议,所以我将把它留给你。

另一种选择hello是移动hello到已在 PATH 中列出的目录之一,而不是将包含的目录添加到 PATH。您可以通过执行以下操作查看完整列表:

> echo $PATH

你还没有说你正在使用什么操作系统,但如果它是任何类似 Unix 的东西,那里可能会/usr/local/bin列出一个。.../bin目录通常包含可执行程序,并且/usr/local是本地添加到操作系统的目录子树。所以你可以把你的程序放在/usr/local/bin,然后(假设/usr/local/bin在你的 PATH 中),hello将始终可用。


推荐阅读