我一直在尋找論壇,但我還沒有找到適用於我的情況的這個問題的答案。我正在嘗試使用'sort'(unix)進行系統調用,但是,我收到一個錯誤消息:「標籤只能是聲明的一部分,聲明不是聲明。」這是導致錯誤的代碼。標籤只能用作聲明的一部分錯誤
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.");
}
在系統調用中,我試圖按字母順序對文件進行排序,以便按名稱簡單地收集文件。
我很傻,因爲這個錯誤發生在char * const包含我的execv系統調用的命令。這個EXACT switch語句適用於不同的程序文件。有人可以發現我缺少的東西嗎? 謝謝
'sort'是一個正常的程序,而不是系統調用。無論如何,聲明是一個沒有阻塞的switch語句都是一個非常糟糕的主意。一本好的C書應該明確**爲什麼**。旁註:你使數組爲const的任何原因,但不是它們指向什麼?您不得更改字符串文字。你在哪裏執行該程序?提供[mcve]。 – Olaf
問題的哪個部分是Unix特有的?如果沒有,請不要使用無關標籤發送垃圾郵件。 – Gerhardh
什麼讓你對錯誤信息感到沮喪?它寫得很清楚。 –