为您找到搜索结果:7454个
VMWare虚拟机“锁定文件失败“怎么办?
虚拟机突然蓝屏了,然后就启动不了了,提示“锁定文件失败,打不开磁盘或快照所依赖的磁盘”的解决方法:如果使用VMWare虚拟机的时候突然系统崩溃蓝屏,有一定几率会导致无法启动,会提示:锁定文件失败,打不开磁盘或快照所依赖的磁盘,这是因为虚拟机在运行的时候,会锁定文件,防止被修改,而如果突然系统崩溃了,虚拟机就来不急把已经锁定的文件解锁,所以你在启动的时候,就会提示无法锁定文件,如下图:解决方法如下:打开你存放虚拟机系统文件的文件夹,注意,是系统文件,不是虚拟机的安装目录,也就是你建立虚拟机的时候下图设置的位置:然后以下面关键字搜索这个文件夹:*.lck我这里找到了三个,删除即可删除后,就不再提示上面第一个图的错误了 虚拟磁盘(.vmdk)本身有一个磁盘保护机制,为了防止多台虚拟机同时访问同一个虚拟磁盘(.vmdk)带来的数据丢失和性能削减方面的隐患,每次启动虚拟机的时候虚拟机会使用扩展名为.lck(磁盘锁)文件对虚拟磁盘(.vmdk)进行锁定保护。当虚拟机关闭时.lck(磁盘锁)文件自动删除。但是可能由于您非正常关闭虚拟机,这时虚拟机还没来得及删除您系统上的.lck(磁盘锁)文...
虚拟文件系统VFS
Linux的文件系统是由虚拟文件系统作为媒介搭建起来的,虚拟文件系统VFS(VirtualFileSystem)是Linux内核层实现的一种架构,为用户空间提供统一的文件操作接口。它在内核内部为不同的真实文件系统提供一致的抽象接口。如下图所示:用户应用程序通过系统调用,与内核中的虚拟文件系统交互,操作实际的文件系统和设备。...
设备文件的创建mknod
设备文件是通过mknod命令来创建的。其命令格式为:mknod[OPTION]...NAMETYPE[MAJORMINOR]TYPE取值:主设备号和次设备号两个参数合并成一个16位的无符号短整形,高8位表示主设备号,低8位表示次设备号。一个设备文件通常与一个硬件设备相关联,或者与硬件设备的某一物理或逻辑分区相关联。但在某些情况下设备文件不会和任何实际的硬件关联,而是表示一个虚拟的逻辑设备。例如,/dev/null就是对应于一个“黑洞的”设备文件:所有写入这个文件的数据都被简单地抛弃。...
(文件描述符0、1、2),(stdin、stdout、stderr),(终端设备)这三者之间的关系???
前言在Linux系统中,一切设备都看作文件。而每打开一个文件,就有一个代表该打开文件的文件描述符。程序启动时默认打开三个I/O设备文件:标准输入文件stdin,标准输出文件stdout,标准错误输出文件stderr,分别得到文件描述符0,1,2。实例现在来看一个 测试ttyname函数的实例(ttyname函数功能是返回在该文件描述符上打开的终端设备的路径名):#include"apue.h"intmain(void){ char*name; if(isatty(0)) { name=ttyname(0); if(name==NULL) &...
虚拟机Linux和Windows之间互传文件的好帮手WinSCP
WinSCP下载地址:http://download.pchome.net/internet/ftp/down-34064-1.html安装很简单,这里就不做介绍。下面是启动后的界面:在主机名(H)一栏输入Linux的IP地址,端口号默认。然后输入Linux中创建的用户名和密码:点击登陆,登陆后界面如下:左边是windows目录,右边是Linux目录,想要传送文件只需拖拽即可。...
高级进程间通信之传送文件描述符
在进程间传送打开的文件描述符的能力是非常有用的,可以用它对客户进程/服务器进程应用进行不同的设计。它使一个进程(一般是服务器进程)能够处理为打开一个文件所要求的一切操作(具体如将网络名翻译为网络地址、拨号调制解调器、协商文件锁等)以及向调用进程送回一描述符,该描述符可被用于以后的所有I/O函数。涉及打开文件或设备的所有细节对客户进程而言都是隐藏的。下面进一步说明从一个进程向另一个进程“传送一打开的文件描述符”的含义。回忆http://www.cnblogs.com/nufangrensheng/p/3498509.html中的图3-2,其中显示了两个进程,它们打开了同一文件。虽然它们共享同一v节点表,但每个进程都有它自己的文件表项。当一个进程向另一个进程传送一打开的文件描述符时,我们想要发送进程和接收进程共享同一文件表项。图17-8显示了所希望的安排。  ...
线程之线程的创建
在传统的UNIX进程模型中,每个进程只有一个控制线程。从概念上讲,这与基于线程的模型中只包含一个线程是相同的。在POSIX线程(pthread)的情况下,程序开始运行时,它也是以单进程中的单个控制线程启动的,在创建多个控制线程以前,程序的行为与传统的进程并没有什么区别。新增的线程可以通过调用pthread_create函数创建。#include<pthread.h>intpthread_create(pthread_t*restricttidp,constpthread_attr_t*restrictattr,void*(*start_rtn)(void*),void*restrictarg);返回值:若成功则返回0,否则返回错误编号当pthread_create成功返回时,由tidp指向的内存单元被设置为新创建的线程的线程ID。attr参数用于定制各种不同的线程属性。线程属性在以后介绍,眼下暂时把它设置为NULL,创建默认属性的线程。新创建的线程从start_rtn函数的地址开始运行,该函数只有一个无类型指针参数arg,如果需要向start_rtn函数传递的参数不止一个,...
进程控制之解释器文件
所有现今的UNIX系统都支持解释器文件(interpreterfile)(也可称为解释器脚本)。这种文件是文本文件,其起始行格式是:#!pathname[optional-argument]感叹号和pathname之间的空格是可选的。最常见的解释器文件以下列行开始:#!/bin/shpathname通常是绝对路径名,对它不进行什么特殊的处理(即不使用PATH进行路径搜索)。对这种文件的识别是由内核作为exec系统调用处理的一部分来完成的。内核调用exec函数的进程实际执行的并不是该解释器文件,而是该解释器文件第一行中pathname所指定的文件。一定要将解释器文件(文本文件,它以#!开头)和解释器(由该解释器文件第一行中的pathname指定)区分开来。(我们可以认为:解释器文件就是在首行指定了其所使用的解释器的文本文件。)要知道很多系统对解释器文件的第一行有长度限制。这些限制包括#!、pathname、可选参数、终止换行符以及空格数。在Linux中支持该限制为127字节。实例让我们观察一个实例,从中可了解当被执行的文件是解释器文件时,内核如何处理exec函数的参数及该解释器文件第一行...
系统数据文件和信息之时间和日期例程
由UNIX内核提供的基本时间服务是计算自国际标准时间公元1970年1月1日00:00:00以来经过的秒数。这种秒数是以数据类型time_t表示的。我们称它们为日历时间。日历时间包括时间和日期。UNIX在这方面与其他操作系统的区别是:(a)以国际标准时间而非本地时间计时;(b)可自动进行转换,例如变换到夏时制;(c)将时间和日期作为一个量值保存。time函数返回当前时间和日期:#include<time.h>time_ttime(time_t*calptr);返回值:若成功则返回时间值,若出错则返回-1时间值总是作为函数值返回。如果参数不为空,则时间值也存放在由calptr指向的单元内。在系统V派生的系统中,调用stime(2)函数,在BSD派生的系统中,则调用settimeofday(2),用于对内核中的当前时间设置初始值。与time函数相比,gettiimeofday提供了更高的分辨率(最高为微秒级)。这对于某些应用很重要。#include<sys/time.h>intgettimeofday(structtimeval*restricttp,void*res...
系统数据文件和信息之系统标识
POSIX.1定义了uname函数,它返回与当前主机和操作系统有关的信息。#include<sys/utsname.h>intuname(structutsname*name);返回值:若成功则返回非负值,若出错则返回-1通过该函数的参数向其传递一个utsname结构的地址,然后该函数填写此结构。POSIX.1只定义了该结构中至少需要提供的字段(它们都是字符数组),而每个数组的长度则由实现确定。某些实现在该结构中提供了另外一些字段。structutsname{charsysname[];/*nameoftheoperatingsystem*/charnodename[];/*nameofthisnode*/charrelease[];/*currentreleaseofoperatingsystem*/charversion[];/*currentversionofthisrelease*/charmachine[];/*nameofhardwaretype*/};每个字符串都以null字符结尾。utsname结构中的信息通常可以用uname(1)命令打印。历史上,BSD派...
系统数据文件和信息之登录账户记录
大多数UNIX系统都提供下列两个数据文件:utmp文件,它记录当前登录进系统的各个用户;wtmp文件,它跟踪各个登录和注销事件。在V7中,每次写入这两个文件中的是包含下列结构的一条二进制记录:structutmp{charut_line[8];/*ttyline:"ttyh0","ttyd0","ttyp0",...*/charut_name[8];/*loginname*/longut_time;/*secondssinceEpoch*/};登录时,login程序填写此类型结构,然后将其写入到utmp文件中,同时也将其添写到wtmp文件中。注销时,init进程将utmp文件中相应的记录擦除(每个字节都填以0),并将一个新记录添写到wtmp文件中。在wtmp文件的注销记录中,将ut_name字段清0。在系统重新启动时,以及更改系统时间和日期的前后,都在wtmp文件中添写特殊的记录项。who(1)程序读utmp文件,并以可读格式打印其内容。后来的UNIX版本提供了last(1)命令,它读wtmp文件并打印所选择的记录。在Linux2.4.22中,这两个文件的路径名是/var/run/ut...
系统数据文件和信息之其他数据文件
在日常操作中,UNIX系统还使用很多其他文件。例如,BSD网络软件有一个记录各网络服务器所提供服务的数据文件(/etc/services),有一个记录协议信息的数据文件(/etc/protocols),还有一个则是记录网络信息的数据文件(/etc/networks)。一般情况下,对于每个数据文件至少有三个函数:(1)get函数:读下一个记录,如果需要,还可以打开该文件。这些函数通常返回指向一个结构的指针。当已到达文件尾端时则返回空指针。大多数get函数返回指向一个静态结构的指针,如果要保存其内容,则需要复制它。(2)set函数:打开相应数据文件(如果尚未打开),然后反绕(rewinds to the beginning)该文件。如果希望在相应文件起始处开始处理,则调用此函数。(3)end函数:关闭相应数据文件。在结束了对相应数据文件的读、写操作后,总应调用此函数以关闭所有相关文件。另外,如果数据文件支持某种形式的关键字搜索,则会提供搜索具有指定关键字记录的例程。例如,对于口令文件,提供了两个按关键字进行搜索的程序:getpwnam寻找具有指定用户名的记录;...