我一直在寻找论坛,但我还没有找到适用于我的情况的这个问题的答案。我正在尝试使用'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
什么让你对错误信息感到沮丧?它写得很清楚。 –