目录遍历的哪些C头在Linux中是安全的?

时间:2010-05-06 18:36:51

标签: c linux cgi pid

我目前正在使用dirent.h和ftw.h进行目录遍历,我的CGI网站100%用C语言编程。我不确定它们是否是过程安全的;各个用户在我的网站上会互相干扰吗?

您为此目的会推荐哪些功能?

2 个答案:

答案 0 :(得分:1)

多个进程安全,例如,使用ftw()同时遍历同一目录树。

但是一个进程走路目录树并不一定安全,而另一个进程更新相同的目录树结构(即添加,删除或重命名目录) )。如果你遇到这种情况,那么你需要让你的CGI进程使用flock()咨询锁(你可以在共​​享目录树的根目录中只有一个空的锁文件;想要遍历树的进程有对该锁文件采取共享锁,并且想要更改树的进程必须对锁文件进行独占锁定。)

答案 1 :(得分:0)

您可能意味着“线程安全”而不是过程安全。所有libc调用在Linux上都是进程安全的,因为进程(通常)位于不同的内存空间中。 另一方面,readdir不是线程安全的,因为它为上下文保留了内部静态存储。在这种情况下使用readdir_r(_r表示可重入)。 dirent.h中的其他函数默认是可重入的。