【发布时间】:2018-01-15 04:42:01
【问题描述】:
我不知道如何为这个命令编写代码。
我有一些东西,但没有工作。我认为是执行官的问题。
有人可以让它工作吗?
我是这个领域的新手。
#include<sys/stat.h>
#include<libgen.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<dirent.h>
#include<stdio.h>
void showArgs(int argc, char *argv[]){
int i;
for (i=0;i<argc;i++) {
printf("Argument is %s ",argv[i]);
}
}
int main(int argc, char*argv[])
{
int isdir(const char *path) {
struct stat statbuf;
if (stat(path, &statbuf) != 0)
return 0;
return S_ISDIR(statbuf.st_mode);
}
printf("Program started... \n");
showArgs(argc, argv);
if(argc == 2)
{
if(isdir(argv[1]))
{
printf("Calling dir with parameter\n");
execl("dirname",argv[1],NULL);
}else{
printf("invalid dir name\n");
}
}
return 0;
}
【问题讨论】:
-
这不起作用怎么办?你看到了什么结果;你能指望什么?另外,您确定简单地调用现有的
dirname程序算作实现它吗? -
它不会打印
execl("dirname",argv[1],NULL); -
它是否打印任何其他代码行?通常,您的程序只会打印您告诉它的内容,例如
printf语句。 -
isdir()在同一个main()函数中定义和调用,它不会给你造成任何问题吗? -
向
dirname出击几乎不能算作实现dirname的一种方式,至少在我的书中没有。