c - 在 C 中创建 CLI 应用程序
问题描述
我想知道如何在 C 中制作一个“持续运行”的 CLI 应用程序。我的意思是,例如,我只想打开终端并键入关键字,然后程序中的函数就会执行。就像“ls”一样。当您键入 ls 时,它会列出当前目录的内容。同样,我想制作一个程序,在编译时它会在调用关键字的情况下执行某些内容。我不想用 ./example 运行可执行文件,而是让命令始终可用。我使用的编译器是 gcc。我已阅读需要创建目标文件,但我不知道如何使用它。
谢谢
解决方案
我的意思是,例如,我只想打开终端并键入关键字,然后程序中的函数就会执行。
您的程序不必“持续运行”以便您能够在不指定路径的情况下调用它......您只需确保程序位于 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
将始终可用。
推荐阅读
- javascript - 如何将多个变量写入数组?
- python-3.x - RuntimeError:事件循环已关闭
- javascript - React refs 的替代方案
- javascript - 逐渐减少javascript中的变量
- xor - 无法计算 XOR 加密
- compression - Gzip/Deflate 是否识别模式
- php - password_verify 在 if 语句中失败
- variables - 在 include_role 中检测到更改时通知处理程序或注册 ansible 变量?
- r - 如何在 R 中使用 dplyr “在事件发生前”创建条件假人?
- javascript - javascript承诺使用firebase云功能的通知不会嵌套并返回错误