Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在制作一个列出execl用于执行ls命令的文件的 C 程序。如果在没有任何命令行参数的情况下调用程序,则列出当前目录,如果用户指定文件目录作为命令行参数,则列出该目录。
execl
ls
execl("/bin/ls", "ls", NULL);可以很好地列出当前目录
execl("/bin/ls", "ls", NULL);
execl(argv[1], "ls", NULL);是我用于命令行参数的。我认为这在代码方面可以很好地工作,但是当我制作命令行参数时我无法正确获取语法:
execl(argv[1], "ls", NULL);
./a.out /test/ls
直接从手册页execl
这些函数的初始参数是要执行的文件的路径名。
因此,如果您要运行的命令是ls,那么第一个参数execl应该是"/bin/ls"。
"/bin/ls"
to 的第二个参数也execl应该是"/bin/ls"。这是因为第二个参数 to是作为程序execl传递的,并且应该是程序的路径。argv[0]argv[0]
argv[0]
因此,只有从第三个参数开始execl,您才真正开始将实际参数传递给命令。所以调用应该是这样的
execl( "/bin/ls", "/bin/ls", argv[1], NULL );