gpt4 book ai didi

c - 试图了解 execlp 在 for 循环中的行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:38 25 4
gpt4 key购买 nike

main(int argc,char **argv)
{
int i;
for(i=1;i<argc;i++)
{
execlp(argv[i],"",NULL);
}
}

我想从命令行输入同时执行多个命令。所以,在命令行中我给出了 ./a.out date & cal & pwd & ls

在输出中,我可以同时执行所有命令。

但是当我第一次调用 execlp 时,它应该采用第一个参数,即 argv[1],并且应该用 process-date 替换整个进程,并且应该在执行后终止整个进程。但是如果它终止了那么它怎么能够再次继续 for 循环呢??

最佳答案

for 循环不会继续。只会运行第一个命令,并在 execlp 运行时替换进程(假设成功)。

但是,如果您打印 argc 的值,您会看到它等于 2,即即使没有 execlp,for 循环也只会运行一次迭代 调用。这是因为在 shell 中,当您运行 a & b & c & 时,它将运行每个命令 abc 分别在后台。在本例中,它使用命令行 ./a.out date 调用您的进程。其他命令由 shell 直接运行,而不是由您的进程运行。

关于c - 试图了解 execlp 在 for 循环中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26828522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com