我是C语言的新手,我正在尝试使用if语句来检查参数(在本例中为“ jobs”),但它似乎不起作用...
int builtin_cmd(char **argv)
{
printf("test1\n");
if (!strcmp(argv[0], "quit")) { //quit command
exit(0);
}
if ((!strcmp(argv[0], "fg")) || (!strcmp(argv[0], "bg"))) { //fg or bg command
do_bgfg(argv);
return 1;
}
if (!strcmp(argv[0], "jobs")) { //jobs command
printf("test2\n");
listjobs(jobs);
printf("test3\n");
return 1;
}
printf("test4\n");
return 0; /* not a builtin command */
}
我输入了“作业”,但是基于测试输出(1-4重复),它没有注册。有谁知道可能出什么问题了?
答案 0 :(得分:5)
argv[0]
指向程序名称,而不是第一个参数。 argv[1]
指出了这一点(如果存在自变量)。
C标准§ 5.1.2.2.1, Program Startup:
如果argc的值大于零,则 argv [0]指向的字符串表示程序名称;如果程序名称在主机环境中不可用,则argv [0] [0]应为空字符。如果argc的值大于1,则argv [1]到argv [argc-1]指向的字符串代表程序参数。
强调我的。