我正在尝试编写一个程序来加密文件并将结果保存到另一个文件中。作为赋值的一部分,我们不允许使用标准C库函数,如fopen()
,fgets()
,fscanf()
等来写入文件。相反,我们只能使用open()
,read()
,write()
和close()
等Unix系统调用。但是,我想确保我的输出文件在写入之前没有被其他应用程序打开。有什么设施可以用C吗?
答案 0 :(得分:1)
只需使用伪随机文件名并使用(O_CREATE | O_EXCL)作为选项打开文件。如果该文件已存在,则打开将失败并显示EEXIST,您可以使用新名称重试。
请注意,这不会保证任何东西,只是降低了可能性。真正的保证将需要文件系统和操作系统特定的方法。