我试图通过C程序运行BASH命令,但我正在用函数execv挣扎。我真的不知道如何编写该函数的第一个参数。我试图用strcat函数将字符串“/ bin /”追加到argv选项卡的第一个元素,这是我在运行程序时编写的命令,但它不起作用。我收到“分段错误”。我没有使用strcat函数,而是尝试了strdup,但我不知道如何正确使用它。通过C程序运行BASH命令
任何帮助,将不胜感激。我的计划在下面。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[], char *envp[]){
char *tab[] = {argv[1],NULL};
if(execve(strcat("/bin/",argv[1]), tab, envp)==-1)
{
perror("execve");
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
所以基本上你只是问如何连接C中的两个字符串?你有没有试过阅读C教程? – melpomene
我不问如何连接,如果这是所有关于连接的函数strcat就足够了。但事实并非如此。所以我想要求助另一种使用execv函数来使我的程序工作的方法。 – TheScientist
如果这不是你要求的,那么这就是你*应该*所要求的。很明显,你不明白'strcat'的作用或C字符串的工作方式。 (作为'strcat'的第一个参数传递一个字符串文字是没有道理的。) – melpomene