进程间传递文件描述符fd】的更多相关文章

众所周知,子进程会继承父进程已经打开的文件描述符fd,但是fork之后的是不会被继承的,这个时候是否无能无力了?答应是NO.Linux提供了一个系统调用sendmsg,借助它,可以实现进程间传递文件描述符fd,而且不仅限于父进程到子进程.sendmsg函数的原型如下: #include <sys/socket.h> ssize_t sendmsg(int socket, const struct msghdr *message, int flags); ssize_t recvmsg(int …
先引入一个例子,该程序的目的是子进程向父进程传递文件描述符,并通过该文件描述符读取buf. #include <func.h> int main(){ int fds[2]; pipe(fds); if(!fork()){ close(fds[1]); int fd; read(fds[0], &fd, sizeof(fd)); printf("child fd = %d\n", fd); char buf[128] = {0}; read(fd, buf, siz…
文章目录 文件描述符 文件数据结构 共享文件 UNIX域socket实现传递文件描述符 进程间传递打开的文件描述符,并不是传递文件描述符的值.先说一下文件描述符. 文件描述符 对内核来说,所有打开的文件都会通过文件描述符引用,文件描述符在进程中是一个非负整数,文件描述符在进程中是从0开始,默认0与标准输入关联.1与标准输出关联.2与标准出错关联.之后进程每打开一个文件或者创建一个新文件的时候,内核都会向进程返回一个文件描述符来表示这个文件,文件描述符是递增的.文件描述符的值与文件没有必然的联系,…
java 后台运行程序命令 nohup java -jar babyshark-0.0.1-SNAPSHOT.jar > log.file 2>&1 & 命令解释:后台启动一个程序命令:nohup command & 以上命令中:> log.file指的是将命令执行生成的数据重定向到log.file中,即文件描述符标准输出(1)指向的是log.file,(2)表示错误信息输出,2>&1代表将错误输出重定向到标准输出,即错误输出和标准输出一起都在标准输…
Linux 利用进程打开的文件描述符(/proc)恢复被误删文件 在 windows 上删除文件时,如果文件还在使用中,会提示一个错误:但是在 linux 上删除文件时,无论文件是否在使用中,甚至是还是在写入,都可以被 rm 简单地删除 :-< 不过,rm 删除时并非是被真正地擦除,特别是当文件还在被进程打开时,是可以完整地恢复的. linux 的每个文件对应一个 inode 号,它有两个计数 i_count (内存引用计数,当前使用这个文件的进程数量) 和 i_nlink (磁盘引用计数,硬链…
1. fd:在形式上是一个非负整数.实际上他是一个索引值.指向kernal为每一个进程所维护的该进程打开文件的记录表. 当程序打开一个文件或者创建一个新文件的时候kernal向进程返回一个文件描述符. 优点:兼容POSIX标准,许多系统调用都依赖于它:缺点:不能移植到unix之外的系统上去 fp:FILE*指针变量标识符 优点:是C语言的通用格式,便于移植 2. vfork:使用方法同fork差不多,也适用于创建子进程 vofork特点: 1)在子进程调用exec或exit之前,它在父进程的空间…
原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ----------------------------------------------------------------- 1.文件描述符和inode号码是不同的两个东西.   2.对于每个进程,系统会建立一个进程控制块(PCB)来保存相关的信息,而这个PCB在内核中的表现其实就是一个称为task_struct的结构体,这…
在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件.链接文件和设备文件 fd:file descriptor 文件描述符0,1,2分别给了标准输入.标准输出和错误输出. ls -l /proc/pid/fd可以查看某个进程所使用的fd 用lsof可以查看比如:lsof -i :22 的显示结果中有一列是FD,这个就是监听在22号端口的进程打开的文件描述符.比如FD这一列显示的是3.再使用lsof -d 3就可以查看到,文件描述符3所打开的文件. 1.    系统最大打开文件…
程序可以理解为硬盘上的普通二进制文件:进程是加载到内存中的二进制文件,除了加载到内存中的二进制文件外,还附有所有对于该二进制文件描述信息的结构体,描述该进程的结构体叫PCB(进程控制块),在这就不在讨论.对于程序与进程,也就可以简单地理解为是否有PCB(进程控制块).下面我们再来讨论PCB与file_struct的关系.  在每一个PCB中,都有一个文件描述符表,通过文件描述符索引指向file_struct(系统打开文件表). 文件描述符在形式上是一个非负整数,实际上,它是一个索引值,指向内核为…
使用sudo lsof -nP -iTCP -sTCP:LISTEN查看占用端口的程序;因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能 概念 文件句柄是windows系统的概念,在linux下称之为文件描述符FD(file description) 常用命令 sort -nr 安装数字逆序排列 -n number -r reverse uniq -c 统计相同项的数量,分两列显示,左列显示数量,右列显示内容 -c count 1)统计各进…