1
여기 내 코드입니다 :잘못된 주소 C (명령 줄 인터프리터)
/* 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");
}
}
}
때마다 I 입력 (예를 들어)/빈/LS, 나는 오류 진술을 얻을 "잘못된 주소". 나는 cmd와 args를 검사하여 올바른 값을 받았는지 확인했다.
int argc
및 문자이다 'envp는 []'주'로 첫 번째 인수가()'결코 없다. 그것은'int argc'와'char ** argv'에 따라야합니다. –폴 감사합니다. 그러나 이것은 내 문제를 해결하지 못합니다. –
그리고'execve'에 대한'args' 매개 변수는 단일 문자열이 아닌'char *'('argv' 등)의 배열이어야합니다. 마지막 항목은 'NULL'이어야합니다. –