2012-04-04 5 views
2

私は少し問題があります。私は自分のCコードまたはC++からディレクトリを作成する必要がありますが問題ではありません。 しかし、ディレクトリ名には ':'、 ''、 ''などの文字を含める必要があります。私はmkdir()関数で作成しようとすると、私はEINVALエラーを取得しようとすると、一般的に現在の時間、 しかし、system("mkdir ...")からすべてが大丈夫です。 この問題を解決するにはどうすればよいですか?mkdir、パス名のシンボル

ありがとうございます!

+1

'mkdir()'ではなく 'mkdir'シェルで動作するサンプル名を与えることができますか?また、マニュアルページでは、可能なエラーコードの1つとして 'EINVAL'も表示されないので、あなたが見ているのが奇妙になります。 – FatalError

+0

コードスニペットを投稿できますか?おそらくファイル名に特殊文字が正しくエスケープされていないように思えますか? – rfinz

+0

'mkdir()'は成功すると0を返し、エラーの場合は-1は* errno *を設定します。 EINVALは、mkdir()の文書化された* errno *値ではありません。どのフィールドでも固定桁数を使用する場合、区切り文字は多少冗長ではありません。 – Clifford

答えて

4

異なるファイルシステムフォーマットでは、有効な文字とは異なる規則があります。 ext2およびその子孫の場合、ファイル名には'/'または'\0'を除く任意の文字を使用できます。

FATファイルシステムとその子孫の場合、無効な文字のリストはより大きく、':'を含みます。

使用しているファイルシステムのフォーマットを確認して、別のファイルシステムでプログラムを実行してみてください。

+0

FAT)))ありがとう! – evghin

+0

'system(" mkdir ... ")'は動作しますが、 'mkdir()'と同じファイルシステムではどうしますか? – Shahbaz

+0

@Shahbaz - 私はそれについて説明しません。私は彼のテストに欠陥があると推測します。 –