Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 进程等待锁定的文件多长时间?_Unix_File Locking - Fatal编程技术网

Unix 进程等待锁定的文件多长时间?

Unix 进程等待锁定的文件多长时间?,unix,file-locking,Unix,File Locking,如果基于Unix的操作系统中的某个进程发现某个文件被锁定是因为另一个进程正在写入该文件,那么在放弃并返回错误之前,该进程需要等待并重试多长时间?在Unix操作系统中,当某个进程写入某个文件时,该文件不会被隐式锁定。你需要显式地锁定它,任何在锁上等待的进程都会无限期地等待,除非进程本身选择超时。好吧,一定有什么东西在阻止并发写入,因为我有30个并发进程,所有进程都将行写入一个文件,而且从来没有任何一行被别人打断过。这实际上取决于进程如何写这些行。如果每行(或一组行)使用一个阻塞写入系统调用,那么U

如果基于Unix的操作系统中的某个进程发现某个文件被锁定是因为另一个进程正在写入该文件,那么在放弃并返回错误之前,该进程需要等待并重试多长时间?

在Unix操作系统中,当某个进程写入某个文件时,该文件不会被隐式锁定。你需要显式地锁定它,任何在锁上等待的进程都会无限期地等待,除非进程本身选择超时。好吧,一定有什么东西在阻止并发写入,因为我有30个并发进程,所有进程都将行写入一个文件,而且从来没有任何一行被别人打断过。这实际上取决于进程如何写这些行。如果每行(或一组行)使用一个阻塞写入系统调用,那么Unix保证在另一个I/O发生之前完成相应的I/O(即,在另一个进程可以写入另一行之前,一个进程可以写入整行)。这与文件锁定无关,但这只是I/O在内核中排队的方式;这意味着每次写入都是在文件末尾进行的。由于每个写入的行可能都是在单个调用中写入的,因此没有行重叠。这个文件是一种日志文件,不是吗?