私はフォーラムを見てきましたが、私の状況に当てはまるこの質問に対する回答は見つかりませんでした。私はシステムコールを '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.");
}
システムコールでは、単純に用語を名前で集めるために、アルファベット順にファイルをソートしようとしています。
これは私のexecvシステムコール用のコマンドが含まれているchar * constで発生するため、私は間違いがあります。このEXACT switch文は別のプログラムファイルで動作します。誰かが私が逃しているものを見つけることができる? ありがとう
'sort'はシステムコールではなく、通常のプログラムです。そして宣言はブロックを持たない 'switch'ステートメントであり、とにかく非常に悪い考えです。良いC本は明らかにすることができます**なぜ**。 Sidenote:あなたが配列 'const'を作る理由は何ですか?文字列リテラルは変更しないでください。そして、あなたはそのプログラムをどこで実行しますか? [mcve]を提供してください。 – Olaf
Unix特有の問題はどれですか?もしそうでなければ、無関係なタグでスパムしないでください。 – Gerhardh
エラーメッセージについてあなたを引き上げるのは何ですか?それはかなり明確に書かれています。 –