精华内容
下载资源
问答
  • CreatFile创建文件无效句柄问题,可能是这个原因 参考资料: http://www.cnblogs.com/fuyanwen/p/3200536.html http://www.cnblogs.com/wendao/archive/2012/07/27/2612597.html QString 和 TCHAR 的相互转换 #...

    CreatFile创建文件无效句柄问题,可能是这个原因
    参考资料:
    http://www.cnblogs.com/fuyanwen/p/3200536.html
    http://www.cnblogs.com/wendao/archive/2012/07/27/2612597.html
    QString 和 TCHAR 的相互转换

    #include <iostream>
    
    #include <Windows.h>
    #include <QtCore/QtCore>
    
    #ifdef UNICODE
    #define FILE_NAME "数据.txt"
    #else
    #define FILE_NAME "data.txt"
    #endif
    
    int main()
    {
        QString szqFileName = QString::fromLocal8Bit(FILE_NAME);
        qint64 nLen = szqFileName.length();
        //
        // QString to TCHAR*
        //
        LPCTSTR szFileName = NULL;
    #ifdef UNICODE
        szFileName = (wchar_t*)szqFileName.utf16();
    #else
        QByteArray byteArray = szqFileName.toLocal8Bit();
        szFileName = byteArray.constData();
    #endif // UNICODE
        //
        // Create file
        //
        HANDLE hFile = ::CreateFile(szFileName, GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
        if (hFile == INVALID_HANDLE_VALUE)
            std::cout << "Cannot create file." << std::endl;
        else
            std::cout << "File created." << std::endl;
        ::CloseHandle(hFile);
        //
        // TCHAR* to QString
        //
        szFileName = TEXT(FILE_NAME);
    #ifdef UNICODE
        szqFileName = QString::fromUtf16((ushort*)szFileName);
    #else
        szqFileName = QString::fromLocal8Bit(szFileName);
    #endif
        QFile file(szqFileName);
        if (!file.remove())
            std::cout << "Cannot remove file." << std::endl;
        else
            std::cout << "File removed." << std::endl;
    
        return 0;
    }
    
    展开全文
  • windows下删除“无效句柄

    千次阅读 2018-03-27 09:19:33
    1. 背景删除windows桌面的文件,可能文件系统出错,导致第一次删除时没有完全删除文件,但是,再次删除时,总提示“文件句柄无效”,强迫症如我,不能容许这样一个无用图标,所以,一定要删除。 2. 方法Step1: 借助...

    1. 背景

    删除windows桌面的文件,可能文件系统出错,导致第一次删除时没有完全删除文件,但是,再次删除时,总提示“文件句柄无效”,强迫症如我,不能容许这样一个无用图标,所以,一定要删除。 大笑


    2. 方法

    Step1: 借助WinRAR软件,右键点击要删除的文件夹,选择“添加到压缩文件”。 在弹出的对话框中选中“压缩后删除源文件”,点击确定,等待压缩完成。

    Step2: 此时,源文件被删除,再将压缩包正常删除即可。


    展开全文
  • 今天写了一个程序(没错我是竞赛党),cena评测时提示Runtime Error 2,然而...求详细说明一下什么是**文件句柄**,以及什么是**无效**文件句柄。 谢了! p.s.粘代码不太方便,热心人帮忙解释一下这两个名词就可以了。
  • linux 文件句柄

    千次阅读 2020-03-31 12:12:59
    1、单个进程文件句柄 1.1、查看进程打开文件句柄数 ##查询进程id: [root@server3 ~]# ps -ef|grep tail root 1027 21336 0 11:15 pts/1 00:00:00 tail -400f catalina.out ##查看进程打开文件句柄: [root@server3...

    1、单个进程文件句柄

    1.1、查看进程打开文件句柄数

    ##查询进程id:
    [root@server3 ~]# ps -ef|grep tail
    root      1027 21336  0 11:15 pts/1    00:00:00 tail -400f catalina.out
    
    ##查看进程打开文件句柄:
    [root@server3 ~]# ll /proc/1027/fd
    total 0
    lrwx------. 1 root root 64 Mar 31 11:15 0 -> /dev/pts/1
    lrwx------. 1 root root 64 Mar 31 11:15 1 -> /dev/pts/1
    lrwx------. 1 root root 64 Mar 31 11:15 2 -> /dev/pts/1
    lr-x------. 1 root root 64 Mar 31 11:15 3 -> /home/jfapp/apache-tomcat-7.0.19/logs/catalina.out
    lr-x------. 1 root root 64 Mar 31 11:15 4 -> inotify
    
    [root@server3 ~]# ls /proc/1027/fd|wc -l
    5
    ##查看进程打开文件数限制
    [root@server3 ~]# cat /proc/1027/limits|grep files
    Max open files            1024                 1024                 files     
    [
    

    1.2、修改进程打开文件数限制

    1.2.1、临时修改,系统重启后失效
    ##修改前查看
    [root@centos6 ~]# ulimit -a|grep files
    open files                      (-n) 1024
    [root@centos6 ~]# 
    ##修改
    [root@centos6 ~]# ulimit -SHn 65536
    ##修改后验证:
    [root@centos6 ~]# ulimit -a|grep files
    open files                      (-n) 65536
    [root@centos6 ~]# 
    ##系统重启
    [root@centos6 ~]# reboot
    ##系统重启后,修改失效
    [root@centos6 ~]# ulimit -a|grep files
    open files                      (-n) 1024
    
    

    ulimit 命令身是分软限制和硬限制,加-H就是硬限制,加-S就是软限制。默认显示的是软限制,如果运行ulimit 命令修改时没有加上-H或-S,就是两个参数一起改变。硬限制就是实际的限制,而软限制是警告限制,它只会给出警告。

    1.2.2、永久修改,重启后生效
    ##修改文件/etc/security/limits.conf
    [root@centos6 ~]# echo "* soft nofile 65536"  >> /etc/security/limits.conf
    [root@centos6 ~]# 
    [root@centos6 ~]# echo "* hard nofile 65536"  >> /etc/security/limits.conf
    [root@centos6 ~]# reboot
    
    Broadcast message from root@centos6.8
    	(/dev/pts/0) at 11:38 ...
    
    The system is going down for reboot NOW!
    
    ##重启后生效
    [root@centos6 ~]# ulimit -a|grep files
    open files                      (-n) 65536
    [root@centos6 ~]# 
    

    总结:生产环境修改进程打开文件数限制时,一般同时修改临时和永久,暂时不重启系统,这样保证以后系统重启也会生效。

    2、系统总体打开文件数:

    2.1、查看

    ##查看当前打开文件总数
    [root@server3 ~]# lsof|wc -l
    5179
    [root@server3 ~]# 
    [root@server3 ~]# lsof|more
    COMMAND     PID      USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
    init          1      root  cwd       DIR              253,0     4096          2 /
    init          1      root  rtd       DIR              253,0     4096          2 /
    init          1      root  txt       REG              253,0   137808   10878992 /sbin/init (deleted)
    init          1      root  DEL       REG              253,0             6291458 /lib64/libpthread-2.12.so
    init          1      root  DEL       REG              253,0             6291463 /lib64/librt-2.12.so
    init          1      root  DEL       REG              253,0             6291474 /lib64/libdbus-1.so.3.4.0.#prelink#.z8OvgH
    init          1      root  DEL       REG              253,0             6291512 /lib64/libnih.so.1.0.0.#prelink#.252iau
    init          1      root  DEL       REG              253,0             6291520 /lib64/libnih-dbus.so.1.0.0.#prelink#.5yh0bd
    init          1      root  DEL       REG              253,0             6291822 /lib64/ld-2.12.so
    

    2.2、修改打开总体文件数限制

    2.2.1、临时修改,重启后失效
    ##查看限制
    [root@centos6 ~]# cat /proc/sys/fs/file-max
    199088
    [root@centos6 ~]# 
    ##修改限制
    [root@centos6 ~]# echo  6553560 > /proc/sys/fs/file-max
    [root@centos6 ~]# 
    [root@centos6 ~]# cat /proc/sys/fs/file-max
    6553560
    [root@centos6 ~]# reboot
    ##重启后失效
    [root@centos6 ~]# cat /proc/sys/fs/file-max
    199088
    
    
    2.2.2、永久修改,重启后生效
    ##修改
    [root@centos6 ~]# echo   fs.file-max = 6553560  >> /etc/sysctl.conf
    [root@centos6 ~]# 
    [root@centos6 ~]# reboot
    ##重启后生效
    [root@centos6 ~]# cat /proc/sys/fs/file-max
    6553560
    [root@centos6 ~]# sysctl -p|grep file
    fs.file-max = 6553560
    

    3、遗留问题:

    ls /proc//fd|wc -l

    lsof|grep
    是什么关系?

    展开全文
  • CentOS7-文件句柄

    千次阅读 2020-06-16 15:40:47
    CentOS7-文件句柄 1./etc/security/limits.conf中指定的nofile的值,nofile有上限,不是无穷大。nofile由内核参数nr_open定义的. “在2.6.25内核之前有个宏定义,定义了这个值的最大值,为1024*1024,正好是100万,...

    CentOS7-文件句柄

    1./etc/security/limits.conf中指定的nofile的值,nofile有上限,不是无穷大。nofile由内核参数nr_open定义的.

    “在2.6.25内核之前有个宏定义,定义了这个值的最大值,为1024*1024,正好是100万,而在2.6.25内核及其之后,这个值是可以通过/proc/sys/fs/nr_open来设置。”

    2.使用cat /proc/sys/fs/nr_open 查看nr_open值,可通过修改/ect/sysct.conf 修改fs.nr_open值,sysctl -p生效

    3.fix_max linux内核定义的最大file handles(文件句柄数)

    nr_open定义是单进程最大file-handles,file-handles(即文件句柄)

    file-max:

    The value in file-max denotes the maximum number of file-

    handles that the Linux kernel will allocate. When you get lots

    of error messages about running out of file handles, you might

    want to increase this limit

    nr_open:

    This denotes the maximum number of file-handles a process can

    allocate. Default value is 1024*1024 (1048576) which should be

    enough for most machines. Actual limit depends on RLIMIT_NOFILE

    resource limit.

    注:

    centos 5/6 等版本中,资源限制的配置可以在 /etc/security/limits.conf 设置,针对root/user等各个用户或者*代表所有用户来设置。 当然,/etc/security/limits.d/ 中可以配置,系统是先加载limits.conf然后按照英文字母顺序加载limits.d目录下的配置文件,后加载配置覆盖之前的配置。

    CentOS 7 / RHEL 7的系统中,使用Systemd替代了之前的SysV,因此 /etc/security/limits.conf 文件的配置作用域缩小了一些。limits.conf这里的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。登录用户的限制,与上面讲的一样,通过 /etc/security/limits.conf 和 limits.d 来配置即可。

    对于systemd service的资源限制,如何配置呢?

    全局的配置,放在文件 /etc/systemd/system.conf 和 /etc/systemd/user.conf。 同时,也会加载两个对应的目录中的所有.conf文件 /etc/systemd/system.conf.d/.conf 和 /etc/systemd/user.conf.d/.conf

    其中,system.conf 是系统实例使用的,user.conf用户实例使用的。一般的sevice,使用system.conf中的配置即可。systemd.conf.d/*.conf中配置会覆盖system.conf。

    注意:修改了system.conf后,需要重启系统才会生效。

    一、如果需要修改 单个进程打开的文件句柄数 即nofile大于1024*1024,需要修改nr_open,方法如下:

    1、使用cat /proc/sys/fs/nr_open查看nr_open值;

    [root@localhost ~]# cat /proc/sys/fs/nr_open 
    1048576
    

    2、修改nr_open的值为10240000

    打开/etc/sysctl.conf,在文件末尾添加fs.nr_open=10240000

    # sysctl settings are defined through files in
    
    # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
    
    #
    
    # Vendors settings live in /usr/lib/sysctl.d/.
    
    # To override a whole file, create a new file with the same in
    
    # /etc/sysctl.d/ and put new settings there. To override
    
    # only specific settings, add a file with a lexically later
    
    # name in /etc/sysctl.d/ and put new settings there.
    
    #
    
    # For more information, see sysctl.conf(5) and sysctl.d(5).
    
    fs.nr_open=10240000
    

    (注:nr_open的值要小于file-max)

    /proc/sys/fs/file-max

    3、执行如下命令,使修改生效

    sysctl -p

    4、验证修改是否生效

    cat /proc/sys/fs/nr_open

    如果结果为10240000,说明修改生效

    二、修改/etc/systemd/system.conf,主要用于systemd service的资源限制

    vi /etc/systemd/system.conf

    #  This file is part of systemd.
    
    #
    
    #  systemd is free software; you can redistribute it and/or modify it
    
    #  under the terms of the GNU Lesser General Public License as published by
    
    #  the Free Software Foundation; either version 2.1 of the License, or
    
    #  (at your option) any later version.
    
    #
    
    # Entries in this file show the compile time defaults.
    
    # You can change settings by editing this file.
    
    # Defaults can be restored by simply deleting this file.
    
    #
    
    # See systemd-system.conf(5) for details.
    
    
    [Manager]
    #LogLevel=info
    #LogTarget=journal-or-kmsg
    #LogColor=yes
    #LogLocation=no
    #DumpCore=yes
    #CrashShell=no
    #ShowStatus=yes
    #CrashChVT=1
    #CtrlAltDelBurstAction=reboot-force
    #CPUAffinity=1 2
    #JoinControllers=cpu,cpuacct net_cls,net_prio
    #RuntimeWatchdogSec=0
    #ShutdownWatchdogSec=10min
    #CapabilityBoundingSet=
    #SystemCallArchitectures=
    #TimerSlackNSec=
    #DefaultTimerAccuracySec=1min
    #DefaultStandardOutput=journal
    #DefaultStandardError=inherit
    #DefaultTimeoutStartSec=90s
    #DefaultTimeoutStopSec=90s
    #DefaultRestartSec=100ms
    #DefaultStartLimitInterval=10s
    #DefaultStartLimitBurst=5
    #DefaultEnvironment=
    #DefaultCPUAccounting=no
    #DefaultBlockIOAccounting=no
    #DefaultMemoryAccounting=no
    #DefaultTasksAccounting=no
    #DefaultTasksMax=
    #DefaultLimitCPU=
    #DefaultLimitFSIZE=
    #DefaultLimitDATA=
    #DefaultLimitSTACK=
    #DefaultLimitCORE=
    DefaultLimitCORE=infinity
    #DefaultLimitRSS=
    #DefaultLimitNOFILE=
    DefaultLimitNOFILE=10240000
    #DefaultLimitAS=
    #DefaultLimitNPROC=
    DefaultLimitNPROC=10240000
    #DefaultLimitMEMLOCK=
    #DefaultLimitLOCKS=
    #DefaultLimitSIGPENDING=
    #DefaultLimitMSGQUEUE=
    #DefaultLimitNICE=
    #DefaultLimitRTPRIO=
    #DefaultLimitRTTIME=
    

    三、修改/etc/security/limits.conf文件

    vi /etc/security/limits.conf

    在文件末尾添加

    root            soft    fsize           unlimited
    
    root            hard    fsize           unlimited
    
    root            soft    cpu             unlimited
    
    root            hard    cpu             unlimited
    
    root            soft    as              unlimited
    
    root            hard    as              unlimited
    
    root            soft    nofile          10240000
    
    root            hard    nofile          10240000
    
    root            soft    nproc           10240000
    
    root            hard    nproc           10240000
    
    * - nofile 100000
    

    四、修改/etc/security/limits.d/20-nproc.conf文件

    vi /etc/security/limits.d/20-nproc.conf

    修改

    *          soft    nproc     4096
    

    *          soft    nproc     10240000
    

    CentOS7修改单个进程可打开的最大文件句柄数为10240000完成

    展开全文
  • nfs 文件句柄

    千次阅读 2017-08-14 16:25:07
    上一篇文章中我们以REMOVE请求为例讲解了NFS请求的处理过程,其中提到了文件句柄的概念,NFS需要根据文件句柄查找一个文件,这篇文章中我们就来聊聊文件句柄。在普通的文件系统中,我们用文件索引节点编号(ino)表示...
  • Win32gui 无效窗口句柄

    千次阅读 2018-12-28 09:43:34
    xx是 无效窗口句柄 经过spy++排查,确定窗口类和名称都无误,后来经过多次测试,发现问题是:窗口打开太慢,在窗口打开之前就开始查找窗口了,当然就找不到了。所以要等一等,一秒也行。 time.sleep(1) 部分python...
  • 文章目录进程和文件句柄概念进程数和文件句柄数的查看ulimit 修改进程数和文件句柄数限制持久化修改用户进程数和文件句柄数限制持久化修系统服务进程数和文件句柄数限制linux系统总限制更新 进程和文件句柄概念 一个...
  • 就算是将新建用户“PC-1”加入“administrator”组里,使用该用户访问服务器仍然显示“句柄无效。” 经测试,将这里的“Guest”用户启用之后,再在客户端以“PC-1”访问服务器,显示正常。 ...
  • 您正在使用指向重叠结构的指针来调用WriteFile()。 这是没有必要的,因为尚未为重叠的I / O打开文件。 通过传递未初始化的重叠结构来产生错误。 无效句柄错误不适用于文件句柄,但适用于...
  • 达梦数据库无效的 语句句柄 今天查看tomcat历史运行记录有一个error错误,详细信息如图: 根据此错误查看多处配置文件: jdbc.properties 配置均正常 考虑到关于数据库句柄的参数值限制找到手册: DM系统管理...
  • 我用ReadFile读取一个文件,第三个参数是512,比实际的缓冲区要大,ReadFile成功调用,返回TRUE,但是文件句柄的值却被改变了,这是什么原理?
  • 昨天在一个客户环境,由于空间紧张,删除了一个文件,遇到了文件句柄与空间释放的问题,记录一下。在系统上,临时表空间扩展到了32G,我新建了一个临时表空间,并切换了数据库设置:[oracle@corde tdb]$ ls -...
  • 原来的代码:subprocess.Popen(cmd,shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE),运行到这一行代码的时候,报error : [WinError 6] 句柄无效错误。经过分析发现,少了stderr=subprocess.PIPE这一句...
  • perl 文件句柄

    2017-01-17 13:45:41
    perl学习之文件句柄filehandle 句柄handle 分为文件句柄和目录句柄文件句柄实际上包含文件,进程和套接字的读写。   文件句柄的操作步骤 open(FD,"filename"); @lines=; close(FD);   open()由...
  • 在操作系统中,I/O一般是指代硬件外设或磁盘,但从软件的角度,任何具有输入输出操作的都可抽象为“文件”,一般在系统中都是用句柄Handle(类似指针)来指代进程中需要打开的某一具体文件,而进程中也配备中一个二...
  • Dev C++出现错误:句柄无效

    千次阅读 2018-01-24 17:17:03
    句柄无效,可能是因为病毒修改了这些地址 如果你是文件无法打开的话,可以这样试试 1、打开Windows自带的“记事本”,粘贴入以下内容 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\exefile\shell\...
  • 句柄无效及拒绝访问错误;

    千次阅读 2018-04-19 08:55:43
    1.https://blog.csdn.net/conanhhy/article/details/10337443(平台使用过程中log文件写入错误:句柄无效及拒绝访问;)当时使用场景:系统中标签页自第4个开始出现空白页面,重启IIS后没有问题了。主要问题:连接...
  • 测试部反馈了一个bug:调试日志文件有时候不更新。对照代码,项目用的代码和之前项目的代码是一样的。感觉没什么问题,我自己测试没发现有不更新的情况,但测试部已经反馈过几次了,肯定有问题。项目deadline很快到...
  • 修改Linux最大文件句柄数踩过坑

    千次阅读 2019-06-26 11:19:51
    项目需要,修改了linux的最大打开文件描述符,大概超过了200多万,然而注销后就无法登录了。。。 /etc/security/lmits.conf,配置内容如下: * soft nofile 2048000 // 软限制 * hard nofile 2048000 //硬限制 ...
  • writefile /readfile 提示无效句柄

    千次阅读 2008-09-26 09:39:00
    首先介绍下 这两个函数的原型: BOOL ReadFile( HANDLE hFile , ...错误提示: 当进行读写数据时候,提示无效句柄 原因: 可能在某处不小心把句柄hFile,用CloseHandle给关闭了。
  • 使用pyinstaller打包python程序,使用-w参数,去掉console,发现执行命令行的subprocess相关语句报“[ERROR] [WinError 6] 句柄无效”的错误。 去掉-w参数,将console显示的话,就正常。 我原本的语句是: #用 ...
  • linux系统下的用户文件句柄数限制 文章来源:企鹅号 为什么要修改用户打开的文件数 系统默认单个进程可以打开1024个文件,对于一些应用如tomcat、oracle等,运行时经常open成千上万个文件,系统管理员需根据...
  • 某个月朗风清的晚上,正在公司对面的深大操场跑步,突然接到同事发来的消息,他发现某机器上的文件句柄使用量有十一万多个(下面输出中的第一个字段) 但是通过运维常用的lsof命令算了下,相差甚远。 似乎很...
  • 一、前言 使用虚拟机遇到挺多问题,有些比较有意义的...打开安装路径,选择vmx文件,右键使用记事本打开: 打开如下: 找到: vmci0.present = "TRUE" 将TRUE改为FALSE: 再次打开,安装就没问题了。 ...
  • 没有使用driver.quit()却自动退出 这时候报了个subprocess问题 那就想到用多进程来跑我的目标函数 from multiprocessing import Process ... ... ... # 省略内容 if __name__ == '__main__': ... ...
  • 在使用vs2005启动调试程序的时候,出现 无法附加,绑定句柄无效 的错误提示,这是由于本地计算机的Terminal Services服务没有启动的原因,该服务描述为: 1 允许用户以交互方式连接到远程计算机。远程桌面、快速用户...
  • AT绑定句柄无效和拒绝访问

    千次阅读 2017-09-29 21:48:14
    绑定句柄无效使用at命令
  • 修改打开文件句柄数限制

    千次阅读 2012-09-07 14:13:12
    句柄数过低会导致以下错误: Caused by: org.apache.mina.core.RuntimeIoException: Failed to open a selector. at org.apache.mina.transport.socket.nio.NioProcessor.(NioProcessor.java:61) ~[mina-core-...
  • 句柄精灵软件

    2018-02-27 16:33:20
    ViewWizard(句柄查看精灵)是一个窗口辅助工具,用于获得窗口各种信息和属性。其中包括窗口类,大小,样式,状态,字体等相关内容。此外,它可以控制一个窗口的状态,比如显示或隐藏,置顶,透明,更改样式等等。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,147
精华内容 12,458
关键字:

文件的无效句柄