gpt4 book ai didi

c - 如何使用 execvp()

转载 作者:行者123 更新时间:2023-11-30 16:20:39 27 4
gpt4 key购买 nike

用户将读取一行,我将保留第一个单词作为 execvp 的命令。

假设他将输入“cat file.txt” ...命令将为 cat 。但我不知道如何使用这个execvp(),我读了一些教程但仍然没有明白。

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

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 child process failed\n");
exit(1);
}
else if (pid == 0) {
if (execvp(command, buf) < 0) {
printf("*** ERROR: exec failed\n");
exit(1);
}
}
else
while (wait(&status) != pid)
;
free(buf);
printf(">");
}///end While
return 0;
}

最佳答案

第一个参数是您希望执行的文件,第二个参数是一个以 null 结尾的字符串数组,这些字符串表示 the man page 中指定的文件的适当参数。 .

例如:

char *cmd = "ls";
char *argv[3];
argv[0] = "ls";
argv[1] = "-la";
argv[2] = NULL;

execvp(cmd, argv); //This will run "ls -la" as if it were a command

关于c - 如何使用 execvp(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55228580/

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