gpt4 book ai didi

c - Unix 编程... fork() & execv() 帮助... C 编程

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:48 31 4
gpt4 key购买 nike

我正在编写自己的 unix 终端,但在执行命令时遇到问题:

首先,我获取用户输入并将其存储到缓冲区中,然后我将单词分开并将它们存储到我的 argv[] 数组中。IE命令是“firefox”以启动存储在 argv[0] 中的 firefox

如何启动命令?这就是我想要做的,但我遇到了错误:

void launchProcess(char *command[], char *file){
pid_t pid;
pid = fork();
if (pid == -1) {
perror("Error when forking");
exit(EXIT_FAILURE);
}
if (pid == 0){
fprintf(stderr, "Child pid = %d\n", getpid());
execv(file, command);
}

当我打电话时:

launchProcess(commandArgv, "STANDARD");

我收到以下错误:错误:launchProcess 的类型冲突

最佳答案

如果您遇到类型冲突错误,您应该确保您列出的函数与其声明具有相同的类型。

此外,您可能已经知道,但是 execv 需要可执行文件的完全限定路径,因此像“STANDARD”这样的值是行不通的;如果您希望它使用 PATH 变量来确定二进制文件的位置,请使用 execvp。您还应确保 argv 数组中的最后一个值为 NULL。最后,确保检查 execv 的返回值;它肯定有可能会失败,例如,如果用户试图执行一个不存在的程序。

关于c - Unix 编程... fork() & execv() 帮助... C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1463681/

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