2017-06-02 5 views
0

Je souhaite envoyer un descripteur de fichier d'un socket tcp du processus A au processus B, afin que le processus B puisse créer un autre socket tcp avec le même descripteur de fichier.Pourquoi ioctl I_SENDFD ne renvoie aucune autorisation (EPERM)?

l'idée est exactement le même que passing file descriptors

l'appel touche de fonction est la suivante:

ioctl(fd, I_SENDFD, fd_to_send); 

mais il retourne toujours EPERM/* Operation not permitted */

J'ai vérifié la Le descripteur de fichier de socket de domaine fd fonctionne, car je pourrais envoyer des messages normaux à travers ce fd.

Je ne sais pas ce qui ne va pas. Je ai googlé, personne ne semble mentionner I_SENDFD a un problème de permission. J'ai essayé d'utiliser "sudo" pour exécuter mes programmes. Ça ne marche toujours pas.

J'ai aussi essayé permettant tout pour ce descripteur de fichier fcntl(fd_to_send, F_SETFL, S_IRWXU|S_IRUSR|S_IWUSR|S_IXUSR|S_IRWXG| S_IRGRP|S_IWGRP|S_IXGRP|S_IRWXO|S_IROTH|S_IWOTH|S_IXOTH);

ne fonctionne pas non plus.

comment réparer?

Répondre