포럼을 통해 조사했지만 내 상황에 적용되는이 질문에 대한 답을 찾지 못했습니다. 그러나 'sort'(유닉스)를 사용하는 시스템 호출을하려고하는데 "레이블은 명령문의 일부일뿐 선언은 명령문이 아닙니다."라는 오류 메시지가 나타납니다. 다음은 오류를 일으키는 코드입니다.레이블은 명령문의 일부로 만 사용될 수 있습니다. 오류
int processid;
switch(processid = fork()){ //establishing switch statement for forking of processes.
case -1:
perror("fork()");
exit(EXIT_FAILURE);
break;
case 0:
char *const parmList[] = {"usr/bin/sort","output.txt","-o","output.txt",NULL}; //execv call to sort file for names.
break;
default:
sleep(1);
printf("\nChild process has finished.");
}
시스템 호출에서 이름순으로 단순히 용어를 모으기 위해 알파벳순으로 파일을 정렬하려고합니다.
내 execv 시스템 호출에 대한 명령이 들어있는 char * const에서 발생하는 오류로 인해 나는 너무 놀라워. 이 EXACT switch 문은 다른 프로그램 파일에서 작동합니다. 누군가 내가 놓친 것을 발견 할 수 있습니까? 감사합니다.
'sort'는 시스템 호출이 아닌 일반 프로그램입니다. 그리고 선언은 블록이없는 'switch'문은 어쨌든 매우 나쁜 생각입니다. 좋은 C 책은 분명히 할 수있다. ** 왜 **. Sidenote : 배열에'const'을 사용하는 이유는 무엇입니까? 문자열 리터럴을 변경하면 안됩니다. 그리고 그 프로그램을 어디서 실행합니까? [mcve]를 제공하십시오. – Olaf
유닉스 특유의 질문은? 없는 경우 관련이없는 태그로 스팸하지 마십시오. – Gerhardh
무엇이 오류 메시지에 대해 당신을 놀라게하고 있습니까? 그것은 꽤 분명하게 쓰여졌습니다. –