gpt4 book ai didi

c - 尝试使用 'system()' 和 'execv()' 函数调用

转载 作者:行者123 更新时间:2023-11-30 19:31:05 26 4
gpt4 key购买 nike

我想从另一个 C 程序执行一个 C 程序。 实际上,当控件返回到调用程序时,我需要使用 system() 函数来实现我的功能。由于我无法使用 system() 获得结果,因此我尝试使用 execv() 但也没有成功。

下面是我正在尝试的示例代码

int main(void) {
puts("executing this prog from another prog");
return EXIT_SUCCESS;
}

上面的名为test1.c

int main(void) {
execv("./test1",NULL); //system("./test1");
puts("!!!Hello World!!!");
return EXIT_SUCCESS;
}

这是test2.c

使用 system() 时,我收到 sh: 1: ./test1: not found 错误,而使用 execv() 时,我收到了 sh: 1: ./test1: not found 错误只需忽略该语句并打印 !!!Hello World!!!

注意:我主要想知道 system() 的功能对于我想要解决的问题。

最佳答案

execv的第二个参数必须是指向空终止字符串的指针数组,更改为:

#include <unistd.h>

int main(void)
{
char *argv[] = {NULL};
execv("./test1", argv);
return 0;
}

如果失败,您可以使用perror检查错误原因:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{
char *argv[] = {NULL};
if (execv("./test1", argv) == -1) {
perror("execv");
exit(EXIT_FAILURE);
}
return 0;
}

关于c - 尝试使用 'system()' 和 'execv()' 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49571789/

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