我有一个名为make的程序,可以通过命令行选项进行调用:
make [command-line-options] [targetname]
这些选项是:
-C目录名:在开始执行之前,make将目录更改为指示的目录。
-f文件名:make从指定的文件中读取其规范,而不是从默认的makefile中读取其规范。
-i:忽略未成功终止动作;即使失败,也要继续执行目标的动作。
-n:在执行之前,先打印(到stdout)每个shell命令序列,但实际上不执行命令。
-p:读入规范文件后,将其信息打印到stdout。然后成功退出。
-s:以静默方式执行,不要在执行每个shell命令序列之前将其打印出来。
如何使用getopt()
,chdir()
和exit()
的调用来实现?
下面是我到目前为止完成的代码:
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include <stdlib.h>
#include <getopt.h>
#define bake
int main(int argc, char *argv[])
{
int opt;
string sDirectory;
opterr = 0;
while (opt = getopt(argc, argv, bake)) != -1)
switch(opt)
{
case '-c':
int rc = chdir(sDirectory.c_str());
break;
case '-f':
break;
case '-i':
clean:
-rm -f *.o;
break;
case '-n':
break;
case '-p':
break;
case '-s':
break;
}
if (argv < 0) {
fprintf(stderr, "file: #s [-d] [progname] failed", progname);
exit(EXIT_FAILURE);
}
return 0;