12

このような別のプロセスによって作成されたブースト共有メモリを開きます

  boost::interprocess::managed_shared_memory segment(boost::interprocess::open_only, "SharedMem");

しかし、共有メモリを作成したプロセスが root ユーザーである場合、それを読み取るプロセスは、通常のユーザーである場合、次の理由で失敗します。

terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'
what():  Permission denied

これを避けるにはどうすればよいですか?つまり、共有メモリへのアクセスをすべての人に許可するということですか?

4

2 に答える 2

7

shared_memory コンストラクターを見ると、パーミッションオブジェクトが必要です。boost::interprocess::permissions::set_unrestrictedおそらくあなたが探しているものです

void set_unrestricted();
//Sets permissions to unrestricted access:
//        A null DACL for windows or 0666 for UNIX.

これによると、1.45版で追加された

于 2012-01-06T14:01:40.327 に答える