サーバーとクライアントがパイプを作成して通信できるようにする状況を作成しています。
mkfifo("fifo",1755);
を使用してサーバーコードにパイプを作成しました:
問題は、後でサーバーコードでfifoを開いてそこから読み取るopen("fifo",O_RDONLY);
ですが、実行すると、fifoへのアクセスを拒否するエラーが表示されます。
私はパイプfifoの権限を見に行って、それはp-wx--s--t
そう:
p
はパイプを表し、-
は、ユーザーに読み取りがないことを意味します。 7でどのように与えたかはわかりませんs
グループ実行にはユーザーがいます。私が1を与えたとしても、ユーザーと他の人に読み取りと実行のみの能力を与え、他の人にはそれが期待されていたはずだとは思いません。権限を誤解していますか?
パイプからバイナリを単純に実行することはできません: パイプからネイティブバイナリを実行する方法はありますか? 。また、実行可能ファイルのスティッキービットは、現代のシステムでは何の価値もないと思います。
mkfifo("fifo",1755);
を使用してサーバーコードにパイプを作成しましたパイプfifoのアクセス許可を見に行ったところ、
p-wx--s--t
そう:
あなたのエラーは1755
先行なしの許可0
、つまり1755
は8進数ではなく10進数として扱われました(1755 & ~022 = 03311 = p-wx--s--t
;どこ 022
はあなたのumaskです)