我编写了一个使用 execl 函数的简单 C 程序。运行这个程序后我期望看到的是ps -U myusername
.
ps -U myusername
如果在终端中写入,我会得到想要的结果。
如果调用execl("/bin/ps", "/bin/ps", "-U myusername", NULL)
我会收到以下错误消息error: improper list
。
但是,如果我从 中删除空格-U myusername
,并按以下方式调用函数:execl("/bin/ps", "/bin/ps", "-Umyusername", NULL)
,我会得到正确的结果。
为什么会发生这种情况以及如何实现预期的行为(这只是一个简单的示例;我真正想要的是让用户输入命令并将其拆分为命令和参数,最后调用类似的东西execlp("command", "command", "arguments", NULL)
。)?