我在试着理解执行命令的各个部分。我对用c++编程很陌生,对linux不太熟悉。我被告知要使用这个命令执行几个语句,而且在大多数情况下,我认为我理解它。
execl(location here, followed by arguments, terminated by a null pointer)
我的任务是使用以下命令执行以下命令:
execl("/bin/ps", "ps", "--forest", (char*) NULL);,这是工作的execl("/bin/date", "date", 0, (char*) NULL);这是有用的。execl("/usr/bin/fortune", "fortune", (char*) NULL);,这不起作用。
execl("/bin/fortune", "fortune", (char*) NULL);,这不起作用。“财富”命令的主要问题是,要么我遗漏了一个参数,要么我找错了位置。我假设这是位置,因为我可以用命令行中的"fortune“来执行它。我已经找过正确的地点了,但没有找到任何提及的地方。
编辑:多亏了ojblass,这个位置被验证为'/usr/bin/fortune',这意味着我的论点肯定不正确。
execl("/usr/bin/find", "find", "/", "-name", "date", "-maxdepth", "3", "2>", "/dev/null", (char *)NULL);,这不起作用。编辑:更改为:execl("/usr/bin/find", "find", "/", "-name", "date", "-maxdepth", "3", "2>/dev/null", (char *)NULL);
这应该是在根目录中查找具有给定名称的文件,最大深度为3,然后将所有错误消息发送到/dev/null。我完全听不懂这个命令。
对于这个问题,我不知道如何处理,但我知道我需要接受他们给出的参数,然后将其传递到我创建的处理程序中。所以,就像:
`execl("/bin/I don't know this part maybe 'signal'?",cmd[1], (char*) NULL);`然后把它传递给signal(cmd[1], sighandler);
写完这篇文章后,我会说我主要在努力理解命令,而不是使用execl()。
如果你能纠正任何地方,我搞砸了,或给一个命令的解释,这将是非常感谢!
谢谢!
编辑:解决方案已张贴在评论中。
发布于 2014-05-02 22:53:01
尝试使用execlp,在PATH环境变量指定的目录中搜索可执行文件:
execlp("fortune","fortune",(char*)NULL);execlp的第一个参数是可执行文件的名称。其余的是传递给char *argv[]的参数,以NULL指针结尾(第一个参数是程序的名称)。
发布于 2014-05-04 22:52:16
概述:
结果,我在shell中错误地解析了“F”的大小写。这确实有效。
https://stackoverflow.com/questions/23437633
复制相似问题