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

在Perl脚本中,我可以打开/写入/关闭一个文件,但是当我尝试将其聚集时,我得到“错误的文件描述符”

在Perl脚本中,当你尝试将文件聚集时出现“错误的文件描述符”通常是因为文件没有正确打开或关闭导致的。

要解决这个问题,你可以按照以下步骤进行操作:

  1. 确保在打开文件之前,你已经正确地指定了文件路径和文件名。可以使用绝对路径或相对路径来指定文件位置。
  2. 在打开文件之前,使用open函数来打开文件,并将文件句柄存储在一个变量中。例如,你可以使用以下代码来打开一个文件并将文件句柄存储在变量$file_handle中:
代码语言:txt
复制
open($file_handle, "<", "filename.txt") or die "无法打开文件: $!";

上述代码中,"<"表示以只读模式打开文件,"filename.txt"是文件的路径和名称。如果文件无法打开,die函数将输出错误消息并终止脚本的执行。

  1. 在完成对文件的操作后,使用close函数关闭文件。例如,你可以使用以下代码关闭文件:
代码语言:txt
复制
close($file_handle) or die "无法关闭文件: $!";

上述代码中,如果文件无法关闭,die函数将输出错误消息并终止脚本的执行。

  1. 在对文件进行操作之前,确保你具有适当的权限来读取和写入文件。如果你没有足够的权限,将无法打开或写入文件。

总结起来,要在Perl脚本中正确打开、写入和关闭文件,你需要确保文件路径和名称正确,使用open函数打开文件并存储文件句柄,使用close函数关闭文件,并确保具有适当的文件权限。

关于Perl脚本中文件操作的更多信息,你可以参考腾讯云的产品文档:Perl文件操作

相关搜索:当我尝试在我的手机上运行我的代码时,我在AndroidManifest.xml文件中得到错误。我正在尝试为我的网站运行一个url文件,但是我一直在powershell中得到一个错误在R中,当我试图写入一个excel文件时,为什么我得到一个“没有这样的文件或目录”的错误?使用C从文件中读取整数以将其添加到数组中。但是,当我尝试打印数组时,我得到的是打印地址当我编织我的文件时,我得到了一个“第6行错误在....找不到函数%>%”的信息当我尝试在python 3中加载文件时,我遇到了一个错误在Snowsql中,当我试图'Put‘一个文件时,我得到了以下错误信息:我正试图在我的Playstate中创建一个对象AllBalls,但是当我试图初始化对象时,我得到了一个错误当我尝试在R中执行时间受限的集群时,我得到了一个错误在ubunu中安装Angular CLI错误-当我尝试在我的ubuntu机器上运行angular CLI命令时,我得到了一个错误当我尝试在intellij idea社区版本2021.2中运行我的第一个kotlin代码时,我得到一个错误当我使用Symfony并在Controller中创建一个文件时,我得到错误的Logic Exception Extension DOM is required我正在尝试从xml文件中读取正则表达式,但是当我将正则表达式传递给C#代码时,我得到了错误的匹配当我使用BufferedWriter和FileWriter时,我在我的txt文件中得到一个中文字符。怎样才能让我的整数正确地写入"caseCountFile“?我正在尝试在电子邮件中写入shell脚本中的日志文件内容,而不是转到日志文件并打开它来查看结果当我尝试将我的numpy数组保存到.npy文件时,我得到了一个内存错误。如何从内存有限的图像文件创建大型.npy文件?在Fitnesse中,当我尝试运行测试时,我得到一个错误,但我的同事能够在相同的脚本上运行测试而没有问题当我尝试更新一个不在方案中的字段时,我在postman中得到了200响应,并且没有显示任何错误当我尝试在python脚本中访问此JSON文件的第一项时,为什么会得到一个KeyError我在opencv中得到了一个错误,但是我给出了到harcascades文件的正确和完整的路径,并且它是一个真实的人脸检测
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux无文件渗透执行ELF

02 技术核心 这里向大家介绍一个linux系统的底层调用函数memfd_create(2),它在内核3.17中引入,会创建一个匿名文件并返回一个文件描述符指向它,该文件表现和常规文件类同, 可以进行修改...descriptor, and as such multiple files can have the same name without any side effects. ---- 类似于下面这样,当我们在虚拟文件系统中查看该进程信息时...perl语言中提供了一个syscall()方法可以满足我们的需求,当然python也可以,但是python实现该功能需要依赖第三方库。...memfd_create()调用时需要传入两个参数,一个是文件名,一个是MFD_CLOEXEC标志(类似于O_CLOEXEC),以便当我们执行ELF二进制文件时,我们得到的文件描述符将被自动关闭。...这里还有一个问题,如何将elf二进制文件写入到创建的文件当中,@MagisterQuis这里使用open函数将$FH内容添加进创建的匿名文件$fd当中,而$FH通过perl转化自要执行的elf文件,这就是该脚本的第二部分

5.6K80

Linux笔记(4)| 文件IO操作

因为现在讲的是Linux,所以最好是在Linux环境中来编译代码,虽然现在写的这些代码在Windows中也照样能够执行,效果也一样,但是最好还是养成在Linux中编译的习惯,后面更复杂一些的代码可能在两种环境中是不一样的...我一开始也是这样做的,但是我的虚拟机有一点问题,即使安装了VMware tools,也无法在Windows与Linux中相互复制粘贴,更为要命的是共享文件夹后来不知道为什么无法使用了,网上的方法都不太行...(3)errno本身实质是一个int类型的数字,每个数字编号对应一种错误。当我们只看errno时只能得到一个错误编号数字(譬如-37),不适应于人看。...lseek函数介绍 (1)文件指针:当我们要对一个文件进行读写时,一定需要先打开这个文件,所以我们读写的所有文件都是动态文件。动态文件在内存中的形态就是文件流的形式。...(2)当我们打开一个空文件时,默认情况下文件指针指向文件流的开始。所以这时候去write时写入就是从文件开头开始的。

83030
  • 【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密

    ,确实产生了一个文件,但是文件的属性却是乱码,而且文件名还带有颜色,而产生这些的原因,其实是第三个参数,我们可以在创建时,设置权限 int fd = open("log.txt", O_WRONLY |...当我们打开文件时,操作系统在内存中要创建相应的数据结构来描述目标文件。于是就有了file结构体。表示一个已经打开的文件对象。而进程执行open系统调用,所以必须让进程和文件关联起来。...只要拿着文件描述符,就可以找到对应的文件 操作系统访问一个文件时,只认文件描述符!...stderr\n"); return 0; } 我们的指令是将文件标识符为 1 的内容拷贝到log.txt中,但是屏幕还输出了一个 标准错误 但是如果我们想让它们都重定向一个文件里面我们可以用...2>,在以后运用中,我们也可以将1重定向到一个文件中,2重定向到另一个文件中,这样在我们需要时,可以更快速的定位 使用 dup2 系统调用 dup2是一个系统调用,用于复制一个现有的文件描述符到另一个文件描述符的位置

    19810

    Linux:基础IO(一.C语言文件接口与系统调用、默认打开的文件流、详解文件描述符与dup2系统调用)

    在操作系统中,进程在打开文件时会获得一个文件描述符,这个文件描述符是进程访问该文件的标识符。一个进程可以打开多个文件,每个打开的文件都会有一个对应的文件描述符。...这意味着一个进程可以同时访问多个文件,进行读取、写入等操作。 当一个文件被打开时,通常会将文件的部分或全部内容加载到内存中,以便进程可以直接访问和操作文件内容。...这样可以提高文件的访问速度和效率。 在系统中,一个进程能打开多个文件。...文件描述符是一个非负整数,用于在程序中唯一标识打开的文件、设备或其他输入/输出资源。当你打开一个文件时,系统会分配一个文件描述符给你,你可以通过这个描述符来读写文件。...这些表项存储在内核内存中,而不是用户进程的内存空间中。 当进程打开文件时,内核会在文件描述符表中为该文件分配一个表项,并将相应的信息存储在表项中。

    37310

    GoAhead环境变量注入复现踩坑记

    和PHP一样,GoAhead在遇到上传表单的时候,会先将这个上传的文件保存在一个临时目录下,待脚本程序处理完成后删掉这个临时文件。...我没有调试代码,无法肯定导致这个问题的原因。但有一种可能,就是在执行到CGI这里的时候,被打开的临时文件描述符其实已经被关闭了。这就是我遇到的第四个坑。...找到可包含的文件 那么我们如果想要利用这个漏洞,就必须找到可以被包含的文件,从上面的测试过程可以发现,临时文件其实已经被写入了,只不过其中文件名包含一个从0开始递增的数字,我们需要进行爆破。...而且爆破的请求本身也会导致这个数字继续上涨,这个过程十分不稳定,所以自然也不建议利用这个文件。 我们还是看回到文件描述符,什么情况下我们可以让这个文件描述符不要关闭?...我想到一种方法,就是在文件没有上传完成的时候,这个文件描述符不会被关闭。那么如何做点这一点呢?

    59620

    自带的 print 函数居然会报错?

    原来为了方便维护大家提交上来的脚本任务,运维自己有维护一个统一的脚本,在这个脚本中使用: cmd = 'python /xxx/test.py' os.popen(cmd) 来触发任务,这也是与我在本地...还是以刚才的 Python 程序为例,当运行 task.py 后会生成两个进程: 分别进入这两个程序的/proc/pid/fd 目录可以看到这两个进程所打开的文件描述符。...还有一点需要注意的是,当我们在父进程中打开的文件描述符,子进程也会继承过去; 比如在 task.py 中新增一段代码: x = open("1.txt", "w") 之后查看文件描述符时会发现父子进程都会有这个文件...: 但相反的,子进程中打开的文件父进程是不会有的,这个应该很容易理解。...父子进程是通过匿名管道进行通信的,当读取端关闭时,写入端输出到达管道最大缓存时会收到 SIGPIPE 信号,从而抛出 Broken pipe 异常。 子进程会继承父进程的文件描述符。

    70310

    基于OpenCV的气体泵扫描仪数字识别系统

    原始图片 图像准备 在开始图像处理流程之前,我们决定先调整一些图像属性,然后再继续。这有点试验和错误,但注意到,当我们调整图像的曝光度时,可以获得更好的结果。...一旦基本的图像隔离功能开始工作,我就创建了一个脚本,该脚本可以遍历图像文件夹,运行数字隔离代码,然后将裁剪的数字保存到新文件夹中供我查看。...k-NN工作原理的基础是,我们将以黑白方式加载每个图像,将该图像存储在每个像素处于打开或关闭状态的数组中,然后将这些打开/关闭像素与特定的数字相关联。...然后,当我们要预测一个新图像时,它将找出哪个训练图像与这些像素最匹配,然后向我们返回最接近的值。 整理好数字后,将创建一个新的脚本,该脚本将遍历这些文件夹,获取每个图像并将该图像与数字关联。...现在,当我训练数字时,我将获得NumPy文件供我的Python测试使用,然后获取一个JSON文档,我可以将其拖到我的iOS应用程序中。

    6010

    Perl语言入门系列之三:文件输入与输出

    在上一篇文章中我介绍了基本的输入与输出方法,通过键盘与屏幕实现用户与脚本的交互,但是为了完成更复杂的任务,输入与输出往往需要直接调用文件数据。...,也可以在脚本中强制指定文件。...'<', 'rocks.txt'; 如果某数据流任务已经完成,可以使用close操作符关闭相应的文件句柄,如下所示: close FILE; ⑹句柄错误信息 在Perl中可以使用die操作符处理程序遇到的致命错误...为Perl中存储系统内置错误信息的变量,运行上面代码,结果如下所示: 由于我们根本没输入file.txt这个文件,所以这里给出报错“No such file…”,这里die函数会给出发生错误的脚本名称及行号...'; ⑺使用文件句柄 一旦一个文件句柄被成功创建,便可以在Perl程序中使用,以读取模式打开的句柄会存入文件信息,可以使用钻石操作符来逐行读取内容,如下所示: $line = ; #读取

    2.4K20

    【Linux文件管理】重定向&&内核级缓冲区&&用户级缓冲区

    文件管理 文件描述符表(files_struct) 上一期我们将文件描述符讲完了,这期来讲讲文件管理中的文件描述符表,在task_struct有一个指针是指向文件描述符表的。...我们进入进入文件描述符表: 可以看到当中有很多属性,虽然这些我们都不知道,但是有一个我么是知道的,就是红框框起来的,这个我们是知道的,这个是一个文件的指针数组,这个数组的下标就是文件描述符。...原因:因为当我们运行C语言程序的时候会自动启动三个流,分别是标准输出流,标准输入流,标准错误流。这三个流分别占了数组的0,1,2这三个位置,我们可以将这三个流的文件描述符打印一下。...我们试试关闭输出流: 当我们关闭输出流的时候屏幕上是不会打印的,因为我们将输出流给关闭了,所以不会在屏幕上打印,又因为我们打开的文件占据了以前输出流数组下标对应的位置,所以不会打印在屏幕上,会打印在文件中...,我们来查看一下: 可以看见文件中也没有,这里先不解释,这里其实存在一个用户级缓冲区,还没刷新到内核缓冲区当中,就将文件关闭了,所以这里不会写入到文件当中。

    10710

    你所不知道的linux匿名管道知识

    可能在大家是试验中或者工作经验中, 应该是左边的命令全部处理完再一次性交给右边的命令进行处理, 不光是大家, 我在最初接触管道时, 也曾有这么一个误会, 因为我们通过现象看到的就是这样。...,则read返回0 4.如果所有管道读端对应的文件描述符被关闭,则write操作会产生信号SIGPIPE 5.当要写入的数据量不大于PIPE_BUF时,linux将保证写入的原子性。...在上面我们可以看到, 如果我们收到SIGPIPE信号, 那么一般情况就是读端被关闭, 但是写端却依旧尝试写入 咱们来重现下 SIGPIPE 这次执行命令需要考验手速了, 因为我们要赶在py醒过来之前,..., 只有真正写入管道写端时才会触发这个错误 如果写入一个 读端已经关闭的管道, 将会收到一个 SIGPIPE, 那读一个写端已经关闭的管道又会这样呢?...在上面也已经证明了上文提到的读写规则: 如果所有管道写端对应的文件描述符被关闭,将产生EOF结束标志,read返回0, 程序退出 总结 通过上面的理论和实验, 我们知道在使用管道时, 两边命令的数据传输过程

    79520

    你所不知道的linux匿名管道知识

    可能在大家是试验中或者工作经验中, 应该是左边的命令全部处理完再一次性交给右边的命令进行处理, 不光是大家, 我在最初接触管道时, 也曾有这么一个误会, 因为我们通过现象看到的就是这样。...,则read返回0 4.如果所有管道读端对应的文件描述符被关闭,则write操作会产生信号SIGPIPE 5.当要写入的数据量不大于PIPE_BUF时,linux将保证写入的原子性。...在上面我们可以看到, 如果我们收到SIGPIPE信号, 那么一般情况就是读端被关闭, 但是写端却依旧尝试写入 咱们来重现下 SIGPIPE 这次执行命令需要考验手速了, 因为我们要赶在py醒过来之前,...只有真正写入管道写端时才会触发这个错误 如果写入一个 读端已经关闭的管道, 将会收到一个 SIGPIPE, 那读一个写端已经关闭的管道又会这样呢?...在上面也已经证明了上文提到的读写规则: 如果所有管道写端对应的文件描述符被关闭,将产生EOF结束标志,read返回0, 程序退出 总结 通过上面的理论和实验, 我们知道在使用管道时, 两边命令的数据传输过程

    1.3K50

    Linux:认识文件

    1.2 被打开的文件  由于: (1)文件要被打开,必然要先被加载到内存中。 (2)一个进程可能打开多个文件,一个文件也可能被多个进程打开。 ——>在操作系统内部一定存在大量被打开的文件 !!...而fprintf的优点是可以指定我们想要输出的流,所以当我们想stderr的2号描述符写入的时候,恰好也是指向显示器文件,所以就会被打印出来!!  ...因为在1号描述符关闭之后,显示器文件并没有被关闭,所以close底层的操作就是对count计数--,然后将文件描述符表的指针置空,但是显示器文件还是打开着的,因为2号描述符还指向显示器文件!!  ...总结:任何一门语言对文件描述符的封装不一样,是千变万化的,比如在C++中可能还会有继承和多态的体系。但是万变不离其中,在底层都是使用的操作系统提供的系统调用接口,对fd文件描述符进行封装。...所以我们会尝试把外设也当成是文件来处理,在使用的时候在内核层面搞一个file结构体, 但是这样会遇到一个问题就是,并不是所有的外设都有读写方法的!!

    9010

    基于OpenCV的数字识别系统

    原始图片 影像准备 在开始图像处理流程之前,我们决定先调整一些图像属性,然后再继续。这有点试验和错误,但注意到,当我们调整图像的曝光度时,可以获得更好的结果。...一旦基本的图像隔离功能开始工作,我就创建了一个脚本,该脚本可以遍历图像文件夹,运行数字隔离代码,然后将裁剪的数字保存到新文件夹中供我查看。...k-NN工作原理的基础是,我们将以黑白方式加载每个图像,将该图像存储在每个像素处于打开或关闭状态的数组中,然后将这些打开/关闭像素与特定的数字相关联。...然后,当我们要预测一个新图像时,它将找出哪个训练图像与这些像素最匹配,然后向我们返回最接近的值。 整理好数字后,将创建一个新的脚本,该脚本将遍历这些文件夹,获取每个图像并将该图像与数字关联。...现在,当我训练数字时,我将获得NumPy文件供我的Python测试使用,然后获取一个JSON文档,我可以将其拖到我的iOS应用程序中。您可以在此处看到该代码。

    1.3K20

    SHELL(bash)脚本编程三:重定向

    第三种是双引号(""),它阻止部分解析,但是允许一些单词(word)的展开。 在双引号中仍保持特殊含义的字符包括: $ ` \ !...[root@centos7 ~]# 重定向 在以下的描述中如果数字n省略,第一个重定向操作符号是文件描述符0),如果第一个重定向操作符号是>,则此重定向指标准输出(文件描述符1...如果word的值为-,则表示关闭文件描述符n。 [n]>&word这里有一个特殊情况:如果n省略且word的结果不是数字,则表示重定向标准错误和标准输出(如前所述)。...由于bash中重定向只在当前命令中有效,命令执行完毕后,重定向被撤销。可以使用内置命令exec使重定向在整个脚本有效。 脚本举例: #!.../stderr #转移标准输出到3号描述符,关闭原来的1号文件描述符。 exec 1>&3- #转移标准错误到4号描述符,关闭原来的2号文件描述符。 exec 2>&4- #命令的标准输出将写入文件.

    1.7K30

    翻译:Perl代码审计:Perl脚本中存在的问题与存在的安全风险

    /$username"); print while ; 当我们将管道打开到“-”时,无论是用于读取(“-|”)还是用于写入(“|-”),Perl都会分叉当前进程,并将子进程的PID...setuid脚本 通常,Perl程序以执行它的用户的权限运行。通过创建脚本setuid,可以将其有效用户ID设置为能够访问实际用户不访问的资源的用户ID(即,包含程序的文件的所有者ID)。...这样即使我们的文件被伪造,我们也不会在打开文件进行写入时杀死它。...Perl跟踪每个字符串的大小和分配长度。在每次写入字符串之前,Perl确保有足够的可用空间,并在必要时为该字符串分配更多空间。然而,在一些较旧的Perl实现中存在一些已知的缓冲区溢出情况。...总结 在研究Perl的这些方面并查看一些特征性示例时,我们的目标是培养一种直觉,帮助我们第一眼看到Perl脚本中的安全问题,避免在程序中犯类似的错误。

    2.7K51

    11 个步骤完美排查服务器是否被入侵

    命令查看异常进程对应的PID b.在虚拟文件系统目录查找该进程的可执行文件 11.如果确认机器已被入侵,重要文件已被删除,可以尝试找回被删除的文件Note: 1、当进程打开了某个文件时,只要该进程保持打开该文件...这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。.../proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。...因此我们可以在/proc/1264/fd/4(fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下: d.从上面的信息可以看出,查看/proc/1264/fd/4就可以得到所要恢复的数据...如果可以通过文件描述符查看相应的数据,那么就可以使用I/O重定向将其重定向到文件中,如: e.再次查看/var/log/secure,发现该文件已经存在。

    3.2K31

    基于OpenCV的数字识别系统

    原始图片 影像准备 在开始图像处理流程之前,我们决定先调整一些图像属性,然后再继续。这有点试验和错误,但注意到,当我们调整图像的曝光度时,可以获得更好的结果。...一旦基本的图像隔离功能开始工作,我就创建了一个脚本,该脚本可以遍历图像文件夹,运行数字隔离代码,然后将裁剪的数字保存到新文件夹中供我查看。...k-NN工作原理的基础是,我们将以黑白方式加载每个图像,将该图像存储在每个像素处于打开或关闭状态的数组中,然后将这些打开/关闭像素与特定的数字相关联。...然后,当我们要预测一个新图像时,它将找出哪个训练图像与这些像素最匹配,然后向我们返回最接近的值。 整理好数字后,将创建一个新的脚本,该脚本将遍历这些文件夹,获取每个图像并将该图像与数字关联。...现在,当我训练数字时,我将获得NumPy文件供我的Python测试使用,然后获取一个JSON文档,我可以将其拖到我的iOS应用程序中。您可以在此处看到该代码。

    5200

    嵌入式Linux:文件IO和标准IO库

    它是进程与文件之间的桥梁,允许进程对文件进行读取、写入和其他操作。在Linux系统中,每个打开的文件都与一个文件描述符相关联,这个文件描述符是一个非负整数,通常是从0开始递增的。...在这个程序中,文件描述符是用于表示这个打开的文件的整数值。当程序调用open函数打开文件时,操作系统会分配一个文件描述符,并将其返回给程序。...O_TRUNC:如果文件存在且为只写或读写打开,则将其长度截断为0。 O_APPEND:追加方式打开文件,在写入数据时追加到文件末尾。...在Linux系统中,文件描述符是有限资源,因此在不再需要使用文件时,应该及时关闭,以释放资源并避免资源泄漏。...除了使用 close 函数显式关闭文件之外,在 Linux 系统中,当一个进程终止时,内核会自动关闭它打开的所有文件。这意味着如果一个程序在退出时没有关闭已打开的文件,内核会代为关闭这些文件。

    14400

    Linux:基础IO

    1.2 被打开的文件  由于: (1)文件要被打开,必然要先被加载到内存中。 (2)一个进程可能打开多个文件,一个文件也可能被多个进程打开。 ——>在操作系统内部一定存在大量被打开的文件 !!...而fprintf的优点是可以指定我们想要输出的流,所以当我们想stderr的2号描述符写入的时候,恰好也是指向显示器文件,所以就会被打印出来!!  ...因为在1号描述符关闭之后,显示器文件并没有被关闭,所以close底层的操作就是对count计数--,然后将文件描述符表的指针置空,但是显示器文件还是打开着的,因为2号描述符还指向显示器文件!!  ...总结:任何一门语言对文件描述符的封装不一样,是千变万化的,比如在C++中可能还会有继承和多态的体系。但是万变不离其中,在底层都是使用的操作系统提供的系统调用接口,对fd文件描述符进行封装。...所以我们会尝试把外设也当成是文件来处理,在使用的时候在内核层面搞一个file结构体, 但是这样会遇到一个问题就是,并不是所有的外设都有读写方法的!!

    8310

    基础IO的理解与操作 - fd

    关闭文件          打开文件后,如何关闭呢?关闭就非常简单: int fclose(FILE *fp);         fp就是对应的文件对象,此时该文件就不会在从内存中读取到了。...发生错误或者文件末尾到达时,返回值是简短的项目计数(或0)                 ptr 写入的字符串                 size:每个数据的大小(单位字节)                ...因此,在内核中:OS为了管理文件,会构建struct file{struct* next / prev // 包含此文件内的全部内容}打开一个就会创建一个具体的对象,然后用双链表将其组织起来。...文件描述符中的0&1&2          当我们随机打开一个文件,加载入内存后会给我们返回一个新的文件描述符,我们可以看看具体的数值下标是多少:          下标是3?难道是从3开始?...出现错误时,返回-1,并适当设置errno。         我们可以使用dup2实现上述的两个功能,这样就不用close关闭显示器文件了。

    79020
    领券