我有10个进程尝试使用open(O_CREAT)调用同时或多或少地打开同一个文件,然后删除它.是否有任何可靠的方法来确定哪个进程实际上创建了文件,哪个进程已经打开已创建文件,例如,如果我想准确计算在这种情况下打开该文件的次数.
我想我可以在文件打开操作上放置一个全局互斥,并使用O_CREAT和O_EXCL标志执行一系列open()调用,但这不符合我对"robust"的定义.
我有一组属性表,它们定义了我的c ++项目中常用的第3部分库的包含和链接路径.有没有办法在可执行文件中定义PATH,以便在我在调试器中启动它时找到二进制文件?
编辑:我注意到如果我将以下内容添加到属性表(通过记事本)
<PropertyGroup>
<VCRedistPaths>c:\path\bin\$(Platform);$(VCRedistPaths)</VCRedistPaths>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
然后我在调试器下运行app时得到c:\ path\bin\Win32(例如)路径,但问题是visual studio没有立即检测到我的更改(如果我更改属性表中的路径或附加另一个属性表与另一个路径),我必须重新启动visual studio以获取拾取的更改.谁知道这是否可以避免?
我所拥有的是进程id和来自该进程的文件描述符.除了sendmsg之外还有什么办法可以复制(或重新打开)该进程的文件描述符以供Linux中的另一个进程使用吗?
Windows有DuplicateHandle用于此目的,我想知道Linux上是否有类似的东西.