次のCコードがある場合:
int main(int argc, char **arg)
{
int x = open("testfilefromc", O_RDWR | O_CREAT);
return 0;
}
これをコンパイルして実行すると、不当にこれが作成されることはありません。
-rw-r----- 1 joewass staff 0B 31 Jan 21:17 testfilefromc
ただし、Pythonモジュールにコンパイルされた次のCコード:
const char *filename = "testfilefrompython";
context->fd = open(filename, O_RDWR | O_CREAT);
これを行います:
---------- 1 joewass staff 165B 31 Jan 21:09 testfilefrompython
そして当然のことながら、ファイルを作成したコードは次回はファイルを開くことができません。
いったいなぜファイルはゼロの権限で作成されるのでしょうか?そして、PythonモジュールにコンパイルされたCで動作が異なるのはなぜですか?私は自分のようにコードを実行するPythonプログラムを実行しています。
その価値についてはmmap
、後でファイルを作成します。
ありがとう!
ジョー
編集:私はchmod
これを修正できることを知っています、問題はなぜですか?
編集2:私がそれほどオプションではないオプションの引数を逃したことを指摘してくれたRoshOxymoronに感謝します。TRWTFは、最初の例がまったく機能したということです。