で作成されたファイルからのファイルのパーミッション:地球上で何が...?私は、次のCコードをお持ちの場合はPython Cコード
-rw-r----- 1 joewass staff 0B 31 Jan 21:17 testfilefromc
しかし、次のCコード、:私はコンパイルして不当ではない実行
int main(int argc, char **arg)
{
int x = open("testfilefromc", O_RDWR | O_CREAT);
return 0;
}
はこれを作成し、 Pythonモジュールにコンパイル:
const char *filename = "testfilefrompython";
context->fd = open(filename, O_RDWR | O_CREAT);
この行います
---------- 1 joewass staff 165B 31 Jan 21:09 testfilefrompython
驚くことではないが、ファイルを作成したコードは、次回に開くことはできません!
なぜファイルはゼロのパーミッションで作成されますか?そして、CでPythonモジュールにコンパイルされた動作が異なるのはなぜですか?私はコードを実行するPythonプログラムを実行しています。
これは価値があるので、私はmmap
ファイルを後で作成しています。
ありがとうございます!
ジョー
EDIT:私は、私はchmod
は、この問題を解決することができます知っている疑問は、なぜのですか?
EDIT 2:私はそれほど別売オプションの引数を逃したことを指摘しRosh Oxymoronに感謝します。 TRWTFは、最初の例がまったく機能しているということです!
Cコードのどこかで 'umask()'を呼び出していることがありますか? –
'strace'の下であなたのコードを実行しようとしてください。 'open' /' creat'と 'chmod' /' fchmod'呼び出しに注意してください。 –
@Frédéric - 私のコードにはumaskはありません。 Pythonが何をしているのか誰が知っているのですか? – Joe