유닉스 터미널을 직접 작성 중이며 명령어를 실행할 때 문제가있다 :유닉스 프로그래밍 ... fork() & execv() help ... C 프로그래밍
먼저 사용자 입력을 받는다. 그리고 그것을 버퍼에 저장하면, 나는 단어를 분리하고 그것을 argv [] 배열에 저장한다. 예 : 명령은 argv [0]에 저장된 firefox를 시작하는 "firefox"입니다.
명령을 어떻게 시작합니까? 이것은 내가 할 노력하고있어,하지만 난 점점 오류가있어 :
void launchProcess(char *command[], char *file){
pid_t pid;
pid = fork();
if (pid == -1) {
perror("Error when forking");
exit(EXIT_FAILURE);
}
if (pid == 0){
fprintf(stderr, "Child pid = %d\n", getpid());
execv(file, command);
}
I 전화 : launchProcess
에 대한 충돌 유형 : 오류 : 나는 다음과 같은 오류를 얻을 수launchProcess(commandArgv, "STANDARD");
을
commandArgv의 유형은 무엇입니까? – camh
귀하의 질문에 중요한 것은 아니지만 "터미널"이 아닌 "쉘"(사용자와 OS 사이의 인터페이스)을 작성하고있는 것처럼 보입니다 (텍스트 입력과 텍스트가있는 사용자 I/O 장치 또는 그래픽 디스플레이). – outis
컴파일 타임 또는 런타임에 오류가 발생합니까? 유형 관련 오류는 일반적으로 컴파일 타임 오류입니다.이 경우 런타임 오류가 발생하여 launchProcess가 약간의 오해를 불러 일으킬 수 있습니다. 두 경우 모두 오류를 생성하는 호출 루틴에서 최소한의 선언 세트를 표시해야합니다. – dmckee