c - 错误地址 C(命令行解释器)

标签 c command-line execve

这是我的代码:

/* myshell program */

#include<stdio.h>
#include <string.h>

#define MAX_LENGTH 40
#define TRUE 1

char cmd[MAX_LENGTH];
char args[MAX_LENGTH];

void prompt() {
  printf("%s", "Shell: ");
  scanf("%s", cmd);

  char *line = NULL;  
  size_t linecap = 0; 
  ssize_t linelen;  

  if ((linelen = getline(&line, &linecap, stdin)) > 0) {
    strcpy(args, line);
  }  
}


int main(char *envp[]) {
  while (TRUE) {
    prompt();
    if (fork() == 0) {
        execve(cmd, args, envp);
        perror("execv");
    }
  }
}

每当我输入(例如)/bin/ls 时,我都会收到一条错误消息,指出“地址错误”。我检查了 cmd 和 args 并确保它们收到正确的值。

最佳答案

检查以下链接: Arguments to main in C

main() 的参数是 int argc 和 char *argv[]

int main(int argc,char *argv[])

关于c - 错误地址 C(命令行解释器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26976360/

相关文章:

c - 如何在下一次递归调用时从二维数组中的下一列\行开始? (C)

c - 错误 : expected expression before ‘float’

c - 如何使用环境变量更改 c 程序中的目录?

elasticsearch - 如何在ubuntu中使用命令终端启动 Elasticsearch

python - 如何在链接的 docker 容器上运行命令?

python - 如何使用合适的 python 版本启动 python 程序?

c - 代码中的时间复杂度?

google-chrome - 使用命令行开关/启动参数在 Chrome 中打印图像

nix - 直接运行二进制文件工作正常,但 execve 失败

c - 在 C 中实现管道