gpt4 book ai didi

创建一个新进程来执行ls命令

转载 作者:太空狗 更新时间:2023-10-29 11:46:14 25 4
gpt4 key购买 nike

我想编写一个程序来创建一个新进程,并在该子进程中执行命令:ls。与此同时, parent 应该等待 child 死去。但是,我的代码不起作用。

请帮帮我,非常感谢!

int main()
{
char * read;
size_t size;

getline(&read , &size , stdin);
read[strlen(read)-1] = '\0';
printf("%s\n" , read);
int status;
pid_t f;
if((f = fork()) == 0)
{
execvp(read , &read);
exit(0);
}
else
{
wait(&status);
}
}

最佳答案

来自 man execvp :

The execv(), execvp(), and execvpe() functions provide an array of pointers to null-terminated strings that represent the argument list available to the new program. The first argument, by convention, should point to the filename associated with the file being executed. The array of pointers must be terminated by a NULL pointer.

您需要使用 char* 数组并将最后一个元素设置为 NULL

我不确定 getline() 读的是什么,但我猜它是 lsd 的目录。 execvp() 的第一个参数应该是 ls,第二个参数是 char* 的数组。

关于创建一个新进程来执行ls命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625898/

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