Tag: execvp

C – 使用execvp和用户输入

我正在尝试让我的C程序从用户那里读取Unix参数。 到目前为止,我一直在搜索这个网站,但是我还没弄清楚到底我做错了什么 – 尽管我的指针实现技能相当有限。 以下是我现在的代码方式; 我一直在乱搞指针而没有运气。 错误也说我需要使用const * char,但我在其他例子中看到* char可以由用户输入。 #include #include #include #include main() { char args[128]; //User input printf(“> “); fgets(args, 128, stdin); execvp(args[0], *args[0]); } 我得到的错误如下: smallshellfile.c: In function ‘main’: smallshellfile.c:13:21: error: invalid type argument of unary ‘*’ (have ‘int’) smallshellfile.c:13:5: warning: passing argument 1 of ‘execvp’ makes pointer from integer without […]

C – 尝试将/ bin / ls传递给execvp时出错

我正在开发一个需要能够使用execvp执行某些命令的C程序,我已经实现了这个: execvp(arguments[0], arguments); 其中arguments[]是一个stings数组。 在大多数情况下,我的实现工作正常 – 例如,如果arguments是{“touch”, “somefile.txt”}预期调用touch命令。 但是,当我尝试将ls传递给execvp时,其参数类似于{“/bin/ls”, “-a”, “.”} ,ls函数按预期打印目录列表,但也会输出错误 ls: cannot access GLIBC_2.0: No such file or directory 我不知道如何解决此警告,谷歌搜索没有任何结果。 有什么想法有什么不对?

使用execvp执行命令

我有一个命令字符串数组,我想通过调用execvp()来执行: char* commands[] = [“ls -l”, “ps -a”, “ps”]; char* command = commands[0]; … 如何使用execvp执行命令?

execvp实际上做了什么?

可能重复: 编写shell – 如何执行命令 我的任务是在C中编写一个shell。到目前为止,我理解execvp将尝试在arg1中运行arg2作为参数的程序。 现在看来这样做了 execvp (“ls”, args); //assume args is {“ls”, “>”, “awd.txt”} 不等于在控制台中键入它 ls > awd.txt 我意识到我需要使用freopen来实现相同的结果,但我很好奇execvp正在做什么。

参数列表是否将字符串引号传递给C中的exec命令?

我正在使用execvp为命令grep -l night *执行一个新进程。 这是我的代码: char * argument[5]; char keyword[] = “night”; argument[0] = (char *) malloc (sizeof(char)*25); argument[1] = (char *) malloc (sizeof(char)*25); argument[2] = (char *) malloc (sizeof(char)*25); argument[3] = (char *) malloc (sizeof(char)*25); argument[4] = (char *) malloc (sizeof(char)*25); argument[0] = “grep”; argument[1] = “-l”; strcpy(argument[2],keyword); argument[3] = “*”; argument[4] = NULL; […]

在execvp返回之后,为什么我的程序没有从它停止的地方开始?

我有一个像这样的代码块作为子线程运行: if(someVar == 1){ doSomeStuff; _exit(0) } else execvp(*(temp->_arguments), temp->_arguments); printf(“I’m done\n”); 当我用someVar == 1运行程序时,我知道_exit(0)调用会杀死我的线程。 但是,当它设置为0时,为什么程序在execvp()调用之后不继续并执行printf语句?

处理execvp的参数数组?

当我调用execvp ,例如execvp(echo, b) ,其中b是命令a的参数数组,稍后更改此数组是否会影响先前执行的execvp调用? 当我尝试调用execp(echo,b)时,它最终打印出来(null)而不是b中的内容。 任何人都可以指出为什么以及我必须做什么才能正确传递参数?

为什么argv参数execvp不是const?

因此定义了execvp: int execvp(const char *file, char *const argv[]); 这使得诸如此类的代码无法使用: const char* argv[] = {“/bin/my”, “command”, “here”, NULL}; execvp(argv[0], argv); 这是意外遗漏吗? 围绕这个const_cast是否安全? 或者一些execvp实现实际上是在那个内存上涂鸦?

如何使用execvp()

用户将读取一行,我将保留第一个单词作为execvp的命令。 让我们说他会输入“cat file.txt” …命令将是cat。 但我不知道如何使用这个execvp() ,我读了一些教程,但仍然没有得到它。 #include #include int main() { char *buf; char command[32]; char name[32]; char *pointer; char line[80]; printf(“>”); while((buf = readline(“”))!=NULL){ if (strcmp(buf,”exit”)==0) break; if(buf[0]!=NULL) add_history(buf); pointer = strtok(buf, ” “); if(pointer != NULL){ strcpy(command, pointer); } pid_t pid; int status; if ((pid = fork()) < 0) { printf("*** ERROR: forking […]

C – 使用Execvp执行Bash命令

我想编写一个程序Shellcode.c,它在输入中接受一个文本文件,其中包含由换行符分隔的bash命令,并执行文本文件中的每个命令:例如,文本文件将包含: echo Hello World mkdir goofy ls 我试过这个(只是开始练习一个exec函数): #include #include void main() { char *name[3]; name[0] = “echo”; name[1] = “Hello World”; name[2] = NULL; execvp(“/bin/sh”, name); } 作为回报,我得到了 echo: Can’t open Hello World 我坚持使用execvp函数,哪里出错了?