
我有两个prpr让我们说prog1和prog2。 我正在用prog1打开一个文件,并对它进行一些 *** 作。 现在没有在prog1中closures文件,我使用unix套接字将其文件描述符发送到prog2,然后在其中执行一些 *** 作。
虽然我得到了相同的描述符,我在prog1中传递,但是在prog2中接收到的fd上执行fstat()时会抛出错误,说错误的文件描述符。 我已经在prog1中打开了文件,其中corerct权限是读取和写入的,但仍然出现错误。
为什么会这样呢? 如果我的方式传递文件描述符是错误的,那么请build议一个正确的。
什么linux库支持套接字,ioctl调用,tuntap等…?
将文件添加到Itunes com
如何从linux中的graphicsinput板手写笔读取压力值?
linux软件看门狗
Directory.Getfilesfind不存在的文件
通过共享内存IPC在进程之间共享指针
一个更好的sprintf?
windows上大量连续的虚拟内存分配
计算程序执行时间
一个可执行文件能发现自己的path吗 (linux)
我相信这个网站有你在找什么:
http://www.lst.de/~okir/blackhats/node121.HTML
linux的man 7 unix也有关于使用SCM_RIGHTS和Unix套接字的其他功能的信息。
修复损坏的链接: http : //web.archive.org/web/20131016032959/http : //www.lst.de/~okir/blackhats/node121.HTML
这个是正常的。 每个程序都有自己的文件描述符。
编辑 :好吧,似乎你可以传递文件描述符使用本地套接字。
您可以在/proc/PID/fd看到它们,它们通常是符号链接到您的文件。 你可以用unix套接字做什么,允许使用sendmsg / recvmsg从一个程序写入一个文件到另一个程序。 看到这个问题更多的细节。
但是有一个更好的方法可以同时写入一个文件。 你可以使用fifo,shm,甚至可以在你的两个程序之间传递你的偏移位置。
文件描述符是一个小的int值,可以让你访问一个文件。 它是一个文件描述符表的索引,这是内核中与每个进程相关的数据结构。 一个进程不能对另一个进程的文件描述符做任何有意义的事情,因为它不能访问任何其他进程的文件描述符表。
这是基于安全原因。 如果一个进程能够对属于另一个进程的打开文件执行 *** 作,那么就会出现混乱。 另外,一个文件描述符只是没有足够的信息去做你想做的事情; 一个进程的文件描述符0(stdin)可能会引用与另一个进程的文件描述符0完全不同的文件。即使它们碰巧是相同的文件,每个进程也需要维护自己关于该打开文件状态的信息它的读/写等等)。
如果你要描述你想要完成的事情,或许我们可以提供帮助。
编辑:
您想要将数据从一个程序传递到另一个程序。 最直接的方法是创建一个管道( man 2 pipe )。 请注意,第二个过程将必须是第一个孩子。
另一种方法是创建第二个进程可以打开和读取的文件(不要共享文件描述符),也可以使用套接字。
总结以上是内存溢出为你收集整理的使用UNIX套接字将文件描述符从同一主机上的一个程序传递到另一个程序全部内容,希望文章能够帮你解决使用UNIX套接字将文件描述符从同一主机上的一个程序传递到另一个程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)