9

私のCプログラムの次の行は、すべて/グループ/所有者に読み取りおよび書き込み権限を提供する必要があります

mkfifo("/tmp/dumbPipe", 0666)

しかし、コードを実行して、書き込みビット以外の許可が設定されていることを確認すると、次のようになります。

prw-r--r-- 

所有者は同じですが、tmpディレクトリにパイプを作成しているので問題がありますか?cmd行からchmod666を実行すると、すべての権限が正しく設定されます。

4

2 に答える 2

11

これはコメントなしの投稿であり、マニュアルを引用しているだけです。簡潔さなど

男3mkfifoからの引用:

これは、通常の方法でプロセスのumaskによって変更されます。作成されたファイルのパーミッションは(mode&〜umask)です。

男2umaskからの引用

プロセスumaskの一般的なデフォルト値はS_IWGRP|です。S_IWOTH(8進数022)。open(2)のmode引数が次のように指定されている通常の場合:

      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH

  (octal 0666) when creating a new file, the permissions on the resulting file will be:

      S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH

  (because 0666 & ~022 = 0644; i.e., rw-r--r--).
于 2009-08-27T19:01:34.443 に答える