【发布时间】:2015-07-30 21:03:06
【问题描述】:
我想知道系统上是否安装了程序less。由于我的要求,我不允许直接使用system("which less")。所以我将尝试PATH 变量中的PATHs 并对文件执行stat 以查看是否安装了less。但是如何在我的每个PATHs 中添加更少的内容?我从这段代码开始
pathValue = getenv ("PATH");
if (! pathValue) {
printf ("'%s' is not set.\n", "PATH");
}
else {
printf ("'%s' is set to %s.\n", "PATH", pathValue);
}
现在它可以正确打印我的PATH,但我不知道如何继续。你能帮助我吗?我认为我必须标记我的 pathValue,我该怎么做?
$ ./a.out 'PATH' is set to /home/developer/google-cloud-sdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games.
【问题讨论】:
-
google C string append你没有吗?
-
C string append的可能重复
-
@Eregrith 是的,但我认为我必须标记 PATH,
-
好吧,你用谷歌搜索过“C tokenize string”吗?顺便说一句,如果你想不出关于如何标记字符串的最微弱的想法,我们告诉你的任何事情都不会帮助你。
-
顺便说一下,这个问题确实有一个有趣的方面,即在*nix-like OS中的目录名可以包含除'/'和'\之外的任何字符0';特别是它可以包含冒号。虽然只有病态的头脑才会有这样的目录,但我并不清楚是否——以及是否:如何——你或
which或 shell 是否会在 PATH 中识别它们。 (好吧,shell 可以始终将 PATH 元素保留在数组中,并让 PATH 成为从数组元素连接的只读变量。但是尝试设置 PATH 的脚本(和程序)会失败。)