我正在尝试编写execl
函数的包装器,但该命令没有运行(直接使用execl
)
然后我添加了vfprintf
用于调试目的。但是vfprintf只打印/bin/ls
,所以我认为它在中间某处被截断了。
我的代码出了什么问题?
int my_execl(const char *file, const char *format, ...)
{
int ret = 0;
va_list args;
va_start (args, format);
vfprintf (stdout, format, args);
ret = execl (file, format, args);
va_end (args);
return ret;
}
int main (int argc , char **argv)
{
my_execl ("/bin/ls", "/bin/ls", "-r", "-t", NULL);
return 0;
}
答案 0 :(得分:1)
你必须手动构建参数列表并调用例如execv 用它。 - Joachim Pileborg
#include <stdarg.h>
#include <unistd.h>
int my_execl(const char *file, ...)
{
int ret;
va_list args;
va_start(args, file);
ret = execv(file, (char **)args);
va_end(args);
return ret;
}