gpt4 book ai didi

c - 编写一个程序来像 C 中的命令行一样工作

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:30 25 4
gpt4 key购买 nike

所以根据我自己的发现,我知道我需要使用 fork()execvp(),但我不能完全从任何在线示例中找出如何正确使用 execvp()。它应该让我基本上运行命令行的东西,但我不明白它需要的参数。就像如果我想运行 ls -a 我如何将它放入 execvp()?然后就是 exec() 没有返回的问题。我该如何处理?

最佳答案

首先,exec() 不会返回,因为它会导致进程将正在执行的程序替换为 exec() 执行的任何程序。也就是说,如果您在 fork() 之后通过 exec() 运行 ls,则 ls 的 PID 将是与调用 exec() 的相同。那就是 exec() 不会创建一个新进程,所以它不能返回,因为调用它的程序中的所有内存和代码实际上都消失了,取而代之的是 exec( )编辑

假设 ls/bin 中,使用 execvp() 运行 ls -a

const char *file = "/bin/ls";
const char *arg1 = "ls";
const char *arg2 = "-a";
const char **argv = {arg1, arg2, NULL};
execvp(file, argv);

关于c - 编写一个程序来像 C 中的命令行一样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32598779/

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