0

我正在制作一个列出execl用于执行ls命令的文件的 C 程序。如果在没有任何命令行参数的情况下调用程序,则列出当前目录,如果用户指定文件目录作为命令行参数,则列出该目录。

execl("/bin/ls", "ls", NULL);可以很好地列出当前目录

execl(argv[1], "ls", NULL);是我用于命令行参数的。我认为这在代码方面可以很好地工作,但是当我制作命令行参数时我无法正确获取语法:

./a.out /test/ls

4

1 回答 1

2

直接从手册页execl

这些函数的初始参数是要执行的文件的路径名。

因此,如果您要运行的命令是ls,那么第一个参数execl应该是"/bin/ls"

to 的第二个参数也execl应该是"/bin/ls"。这是因为第二个参数 to是作为程序execl传递的,并且应该是程序的路径。argv[0]argv[0]

因此,只有从第三个参数开始execl,您才真正开始将实际参数传递给命令。所以调用应该是这样的

execl( "/bin/ls", "/bin/ls", argv[1], NULL );
于 2014-06-04T23:06:59.503 回答