首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用filename为当前pid打开的文件获取fileno()?

使用filename为当前pid打开的文件获取fileno()的方法是通过Python的os模块中的os.open()函数来实现。具体步骤如下:

  1. 首先,导入os模块:import os
  2. 使用os.open()函数打开文件并获取文件描述符(file descriptor):fd = os.open(filename, os.O_RDONLY)
    • filename:要打开的文件名或路径。
    • os.O_RDONLY:打开文件的模式,这里使用只读模式。
  • 使用os.fdopen()函数将文件描述符转换为文件对象:file_obj = os.fdopen(fd)
    • fd:文件描述符。
    • file_obj:文件对象。
  • 使用file_obj.fileno()方法获取文件对象的文件描述符:fileno = file_obj.fileno()
    • fileno:文件描述符。

完整的代码示例:

代码语言:txt
复制
import os

def get_fileno(filename):
    fd = os.open(filename, os.O_RDONLY)
    file_obj = os.fdopen(fd)
    fileno = file_obj.fileno()
    return fileno

这样,通过调用get_fileno(filename)函数,可以获取到使用filename为当前pid打开的文件的文件描述符。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux下的IO监控与分析

/补充"业务级和进程级"IO分析        文件级IO分析,主要针对单个文件, 回答当前哪些进程正在对某个文件进行读写操作.        1 lsof   或者  ls /proc/pid/fd...       2 inodewatch.stp lsof  告诉你 当前文件由哪些进程打开 lsof ...../io   #  io目录 当前由 bash 和 lsof 两个进程打开 lsof 命令 只能回答静态的信息, 并且"打开" 并不一定"读取", 对于 cat ,echo这样的命令, 打开和读取都是瞬间的...以为我们的业务为例,发现某次查询时,系统的IO访问模式如下:    访问了A文件一次    访问了B文件500次, 每次16字节,   平均间隔 502K    访问了C文件500次, 每次200字节,..., 作为输入交给 iotest.py, iotest.py 按照 strace 文件中的访问模式, 模拟相应的IO iotest.py -s io.strace -f fmap fmap 为映射文件,将

1.9K40

VBA小技巧04:使用VBA获取能够打开指定文件的EXE程序

这是一个很有趣的技巧!可以通过你给定的文件名来获取计算机中可以打开该文件的EXE程序,即可执行程序。有时候,我们可能真的需要找到可以打开指定文件名的EXE程序,然后打开它。...或者,要看看计算机中是否有可以打开指定文件名的EXE程序,然后好决定做下一步的操作。...实现获取计算机中可以打开指定文件的EXE程序的代码: 'API声明 Declare Function FindExecutable Lib"shell32.dll" Alias "FindExecutableA...strExePath = Left$(strExePath, InStr(strExePath, Chr$(0)) - 1) ExePath = strExePath End Function 现在,我们要获取能够打开代码所在工作簿的...也可以指定一个文件来获取其EXE程序,例如: MsgBox ExePath(ThisWorkbook.FullName) 运行后的结果如下图2所示。 ?

3K20
  • UNIX高级环境编程 第三次实验 实现带参数的简单Shell

    (系统调用,用于等待子进程结束、获取子进程的运行状态,本实验仅仅用它使父进程等待子进程结束)、exit退出函数 fcntl.h: 用到文件权限位、文件打开函数 errno.h: ​ 用到errno、strerror...,调用getcwd得到当前目录存在s+11位置之后,("[Testshell "是11个字符),最后再使用strcat将后半部分提示字拼接到后面~ 2.4 构建argv ISO C标准规定的string.h...**arg:**可执行程序所带的参数,第一个参数为可执行文件名字,没有带路径且arg必须以NULL结束。...,我们可以特 判将参数argv[1]等于使用getenv("HOME")获取家目录的环境变量: if (!...这两个函数通过open命令,将之前获取的rfile 和wfile文件打开,获取File descriptor后,再使用dup2函数重定向STDIN_FILENO和STDOUT_FILENO,open函数采用权限位为

    96020

    1(UNIX基础)

    公用函数库在系统调用之上,应用软件既可以使用公用函数库,也可以使用系统调用。(系统调用和库函数的比较在最后) 2 列出一个目录中所有文件的名字,也就是命令ls的实现 Figure 1.3....,必须先以可写权限用open系统调用打开一个文件,获得所打开文件的fd,例如 fd=open(\“/dev/video\”, O_RDWR)。...fd是一个整型值,每新打开一个文件,所获得的fd为当前最大fd加1(Linux系统默认分配了3个文件描述符值:0-standard input,1-standard output,2-standard...fopen函数打开一个文件,获得所打开文件的FILE结构指针pf,例如pf=fopen(\“~/proj/filename\”, \“w\”)。...实际上,由于库函数对文件的操作最终是通过系统调用实现的,因此,每打开一个文件所获得的FILE结构指针都有一个内核空间的文件描述符fd与之对应。

    86030

    【Linux】 拿下 系统 基础文件操作!!!

    ("log.txt","w") 打开也有可能会失败,所以还要检查fp是否为空指针。...当我们使用完文件之后一定一定要关闭文件:fclose(fp) 我们要进行文件操作,前提是我们的程序跑起来了!文件打开和关闭,是CPU在执行我们的程序。..., int flags, mode_t mode); 第一个参数和C语言fopen的第一个参数一致(表示文件路径或当前目录下的文件名) 第二个参数表示想怎样打开文件,传入的是标志位 第三个参数表示创建文件的权限...来看效果 那么我们打开也是很简单将标识符换为,也可以获取对应文件描述符,然后通过使用read函数,我们就可以完成读取文件的操作。...所以语言层的文件操作函数,本质底层是对系统调用的封装!通过不同标志位的封装来体现w r a+等不同打开类型! 我们在使用文件操作时,一般都要使用语言层的系统调用,来保证代码的可移植性。

    10600

    《理解 Unix 进程》笔记-1

    当一个进程产生一个 fork 请求时,操作系统执行以下功能: 为新进程在进程表中分配一个空项 为子进程赋一个唯一的进程标识符 为一个父进程上下文的逻辑副本,不包括共享内存区 增加父进程拥有的所有文件的计数器...pid 并不传达关于进程本身的任何信息,仅仅是一个数字标识 在 python 中查看当前进程 pid 可以使用 getpid() 方法。...进程皆有父 系统中运行的每一个进程都有对应的父进程。每个进程都知道它父进程的标识符(ppid)。 在 python 中查看当前进程 pid 可以使用 getppid() 方法。...打开多个资源所分配的文件描述符编号是尚未使用的最小的数值。 资源一旦关闭,对应的文件描述符编号就会释放又能继续使用了。 文件描述符只是用来跟踪打开的资源,已经关闭的资源是没有文件描述符的。...()) 输出: 0 1 2 进程皆有资源限制 文件描述符代表已打开的资源,当资源没有被关闭的时候,文件描述符编号会一直递增,那一个进程可以拥有多少个文件描述符呢?

    91310

    如何实现进程代码段的分页度量

    , buf:为对应放置信息的缓冲区(即用户空间内存地址); count:为要读取的信息长度; pos:为读的位置相对于文件开头的偏移,这里的pos是想读取的物理地址 */ ssize_t my_read...SEEK_CUR 偏移量设置为当前位置加上offset字节。 SEEK_END 偏移量设置为文件大小加上偏移字节大小。...此程序以十六进制和ascii格式显示指定文件的内容(包括表示存储介质的任何设备专用文件) 用户可以使用箭头键命令浏览文件内容,也可以调整十六进制显示的格式, 以便从五种数据大小中进行选择:字节(B)...,并获取当前读写指针的位置 location = lseek64( fd, position, SEEK_SET ); // try to fill 'buffer[]' with data...一个进程的内存页是否加载到物理内存,系统是有记录的。/proc/$pid/pagemap文件就记录了pid进程的虚拟地址和物理地址的映射情况。

    2.8K20

    2.并发编程~先导篇(下)

    |PROT_READ][,access=ACCESS_DEFAULT][,offset]) fileno:就是我们经常说的 文件描述fd 可以通过 os.open()直接打开fd 也可以调用文件的 f.fileno...() length:映射区大小,(一般写0就OK了) 如果length为0,则映射的最大长度将是调用时文件的当前大小 一般把 文件大小os.path.getsize(path)传进去就可以了 flags...未决信号集:没有被当前进程处理的信号集合(可以通过 signal.sigpending()获取 set集合) 阻塞信号集:要屏蔽的信号(不能被用户操作) 回顾一下上面说 kill9pid原理的知识: kill-l...【为了减少bug】(eg:你在某个文件夹下运行,这个文件夹被删了,多少会点受影响) 重置文件掩码(继承了父进程的文件掩码,通过 umask(0)重置一下,这样可以获取777权限) 关闭文件描述符(既然用不到了...("/home/dnt") # 改变当前工作目录 os.umask(0) # 获取777权限 # 5.

    1.4K40

    【Linux】基础 IO(文件描述符fd & 缓冲区 & 重定向)

    此外,若O_CREAT与O_EXCL同时设置,并且欲打开的文件为符号连接,则会打开文件失败。  ...O_TRUNC 若文件存在并且以可写的方式打开时,此旗标会令文件长度清为0,而原来存于该文件的 资料也会消失。  ...exe指向当前可执行程序的二进制文件。里面还有一个目录fd 进入fd目录,可以看到默认的文件描述符0、1、2是打开的。...filename获取文件信息,并保存在buf所指的结构体stat中 返回值: 执行成功则返回0,失败返回-1,错误代码存于errno 错误代码: ENOENT 参数file_name指定的文件不存在 ENOTDIR...分析命令 { (void)len; // 避免不使用的时候告警 // 虽然定义的是全局默认为0,但是由于这些工作都是重复去做的,为保证安全性,需要局部初始为0 memset(gargv

    31910

    nohup、&、setsid、fork和fg、bg究竟有啥区别?

    可打开的最多pts数为/proc/sys/kernel/pty/max,当前已打开的pts数为/proc/sys/kernel/pty/nr。 2. 什么是守护进程?...,而命令行或脚本中可以通过使用命令setsid来运行程序实现。setsid帮助一个进程脱离从父进程继承而来的已打开的终端、隶属进程组和隶属的会话。...如果只修改当前用户对文件的权限,可用:chmod u+xrw,这里的“u”表示当前用户自己,如果改成“g”则表示同组,改成“o”则表示其它用户。...示例: 为文件abc添加当前用户可执行权限 chmod u+x abc 为文件abc添加同组用户可读权限 chmod g+r abc 为文件abc添加其它用户可写权限 chmod o+w abc 为文件...abc添加当前用户可读可写权限 chmod u+rw abc 为文件abc添加当前用户和同组用户可读可写权限 chmod ug+rw abc 6. fg&bg 看下面一段代码: // filename

    2.3K20

    WPF 使用 Pandoc 把 Markdown 转 Docx 选择文件获取文件的文件夹使用资源管理器打开文件夹选择指定文件

    本文告诉大家如何通过 WPF 使用 Pandoc 把 Markdown 转 Docx 文件 在之前有文章使用 Pandoc 把 Markdown 转 Docx但是这里的方法需要每次都调用命令行,本文提供方法封装了命令行...// pick.FileName 是选择的文件 } 这里 ShowDialog 传入的窗口是当前的窗口 获取文件的文件夹 为了方便用户,在用户输入需要转换的文件的时候就自动添加转换之后的...Word 文件 这里定义的 MVVM 是使用 lindexi.wpf.Framework 这个库,通过 Nuget 安装 定义了 ViewModel 类,这个类只有三个属性 public...使用资源管理器打开文件夹选择指定文件 在转换完成之后,让用户的资源管理器打开 Word 所在的文件夹,选择转换的 Word 需要用到下面代码 var argument = "/...可以通过点击下面的网站下载 使用 Pandoc 把 Markdown 转 Docx-CSDN下载 软件使用方式 解压缩软件到一个文件夹,双击运行 PandocMarkdown2Docx.exe 然后填写需要转换的文件

    1.2K20

    文件IO 小小经验谈

    文件描述符的范围是0~OPEN_MAX,因此是一个有限的资源,在使用完之后要及时的释放。 文件描述符仅在一个同一个进程中有效,即不同进程的文件描述符,同一个值可能描述的是不同的文件!!!...在Linux系统中有三个已经被分配的文件描述符,分别是: 0 STDIN_FILENO 标准输入流 1 STDOUT_FILENO 标准输出流 2 STDERR_FILENO 标准错误流 这三个文件描述符和它们各自的功能是绑死的...查看一个进程能打开多少文件描述符的另一个方法: cat /proc/这里填pid/limits |grep "Max open files" ---- 文件I/O操作 打开/创建文件 在Linux下,用...默认为阻塞,即对文件的读写需要等待操作状态返回 最后的那个mode。只有在O_CREAT存在的时候才能使用。...为相对当前位置的位置 若:SEEK_END,offset为相对文件结尾的位置 函数执行成功时返回文件的偏移量,所以可以在SEEK_CUR模式下偏移0个位置,以获取当前的偏移量 ---- 测试代码示例 #

    64720

    Python守护进程daemon实现

    这是为了保证守护进程的当前工作目录在一个挂载的文件系统中,该文件系统不能被卸载。 5、关闭不再需要的文件描述符。根据具体情况来定。...6、某些守护进程可以打开/dev/null使其具有文件描述符0、1、2,这使任何一个试图读标准输入、写标准输出或标准错误的库例程都不会产生任何效果。...总结守护进程编程规则 1.在后台运行,调用fork ,然后使父进程exit 2.脱离控制终端,登录会话和进程组,调用setsid()使进程成为会话组长 3.禁止进程重新打开控制终端 4.关闭打开的文件描述符...os.setsid() '''防止在类似于临时挂载的文件系统下运行,例如/mnt文件夹下,这样守护进程一旦运行,临时挂载的文件系统就无法卸载了,这里我们推荐把当前工作目录切换到根目录下''' os.chdir.../usr/bin/env python #coding: utf-8 import sys, os '''将当前进程fork为一个守护进程 注意:如果你的守护进程是由inetd启动的,不要这样做

    7.7K30

    Python 守护进程

    调用‘chdir("/")’确认我们的进程不保持任何目录于使用状态。不做这个会导     致系统管理员不能卸装(umount)一个文件系统,因为它是我们的当前工作目录。    ...[类似的,我们可以改变当前目录至对于守护程序运行重要的文件所在目录] 5. 调用‘umask(0)’以便我们拥有对于我们写的任何东西的完全控制。...然后使用一个循环,守护程序可以关闭所有可能的文件描     述符。你必须决定你需要做这个或不做。...如果你认为有可能有打开的文件描     述符,你需要关闭它们,因为系统有一个同时打开文件数的限制。 7. 为标准输入,标准输出和标准错误输出建立新的文件描述符。...即使你不打算     使用它们,打开着它们不失为一个好主意。

    93530

    【Linux】————(文件描述符、重定向、文件缓冲区……)

    ,所以文件也别创建再来当前路径,打开进程的本质其实是进程打开文件。...需要使用mode选项,来指明新文件的访问权限 O_APPEND: 追加写 O_TRUNC: 如果文件已经存在,而且是个常规文件,以写的方式打开,传入这个选项后,他就会把文件清空...返回值: 成功:新打开的文件描述符 失败:-1 mode_t:表示起始权限,int类型 open函数具体使用哪个,和具体应用场景相关,如目标文件不存在,需要open...从上面的结果可以得出结论, 文件描述符的分配规则:在files_struct数组当中,找到当前没有被使用的最小的一个下标,作为新的文件描述符。...缓冲区存在的意义:OS为语言考虑,语言为用户考虑。给上层提供高效的IO体验,间接提高整体效率。 缓冲区的刷新策略 立即刷新。

    8410

    守护进程「建议收藏」

    API getpgrp pid_t getpgrp(void); 获取当前进程的进程组ID, 总是返回调用者的进程组ID getpgid pid_t getpgid(pid_t pid); 如果pid...获取指定进程的进程组ID setpgid int setpgid(pid_t pid, pid_t pgid); 改变进程默认所属的进程组...., 子进程调用setsid 基础API getsid pid_t getsid(pid_t pid); 获取进程所属的会话ID 成功:返回调用进程的会话ID;失败:-1,设置errno pid为0表示察看当前进程...; 必须 子进程创建新会话, setsid函数, 使子进程完全独立出来, 脱离控制; 必须 改变当前目录为根目录, chdir()函数, 防止占用可卸载的文件系统, 也可以换成其它路径, 为了增强程序的健壮性...; 非必须 重设文件权限掩码, umask()函数, 防止继承的文件创建屏蔽字拒绝某些权限, 增加守护进程灵活性; 非必须 关闭文件描述符, 继承的打开文件不会用到, 浪费系统资源, 无法卸载, close

    59840

    【Linux】基础IO(文件描述符、缓冲区、重定向)

    运行代码时,进程就跑起来了,此时进程所在的路径就是当前进程的工作路径,所以在此创建文件。打开文件的本质其实是进程打开文件。 文件存在,但没有被打开时存在于磁盘中。...这是因为权限掩码会与你的设置的权限,进行位运算,结果就不一样了。系统默认权限掩码是0002 所以我们可以在打开文件前设置默认的权限掩码为0 此时权限就对应上了。...学了系统调用,我们可以用系统调用接口,也可以用语言提供的文件方法。但还是推荐使用语言提供的方法。因为系统不同,系统调用的接口可能不一样。 我们打开的文件是当前xshell的终端。...系统中有一个proc目录,里面有很多蓝色的文件夹,它是由进程的pid来做的。 我们查看某个进程的文件夹。cwd就是当前进程的工作路径。exe指向当前可执行程序的二进制文件。...从上面的结果可以得出结论, 文件描述符的分配规则:在files_struct数组当中,找到当前没有被使用的最小的一个下标,作为新的文件描述符。

    18310

    spawn-fcgi原理及源代码分析

    非常久之前看的spawn-fcgi的代码。当时由于须要改一下里面的环境变量。今天翻代码看到了就顺手记录一下。就当沉淀.备忘吧。 用spawn启动FCGI程序的方式为:....假设设置了-P參数,须要保存Pid文件,就用open系统调用打开文件。...其參数unixsocket表明须要使用unix sock文件,这里不多介绍。函数代码页挺简单。...基本没啥可说明的。 对于子进程:注意一下dup2函数。由子进程执行,将监听句柄设置为标准输入。输出句柄。比方FCGI_LISTENSOCK_FILENO 0 号在FCGI里面代表标准输入句柄。...对于父进程: 主要须要用select等待一会,然后调用waitpid用WNOHANG參数获取一下子进程的状态而不等待子进程退出。假设失败就打印消息。否则将其PID写入文件。

    2.2K10

    spawn-fcgi原理及源码分析「建议收藏」

    很久之前看的spawn-fcgi的代码,当时因为需要改一下里面的环境变量。今天翻代码看到了就顺手记录一下,就当沉淀.备忘吧。 用spawn启动FCGI程序的方式为:....其功能主要是打开监听端口,绑定地址,然后fork-exec创建FCGI进程,退出完成工作。 老方法,main函数使用getopt解析命令行参数,从而设置全局变量。...如果设置了-P参数,需要保存Pid文件,就用open系统调用打开文件。...其参数unixsocket表明需要使用unix sock文件,这里不多介绍。...对于父进程: 主要需要用select等待一会,然后调用waitpid用WNOHANG参数获取一下子进程的状态而不等待子进程退出,如果失败就打印消息。否则将其PID写入文件。

    2.5K10
    领券