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?