对于简单的任务,我使用 GNOME 文件 (Nautilus) 来复制文件而不是 rsync。我尝试挖掘我不熟悉的源nautilus-file-operations.ccp
,并且我假设它使用自己的自定义实现(不是)进行错误处理和report_copy_progress
?我不知道实际的系统调用发生在哪里。
对于简单的任务,我使用 GNOME 文件 (Nautilus) 来复制文件而不是 rsync。我尝试挖掘我不熟悉的源nautilus-file-operations.ccp
,并且我假设它使用自己的自定义实现(不是)进行错误处理和report_copy_progress
?我不知道实际的系统调用发生在哪里。
我相信所有 GNOME 文件操作都使用 GFiles,根据描述:
所以 I/O 实际上是在ginputstream.c和goutputstream.c中实现的,在g_input_stream_read之类的函数中,但这依赖于一些读取函数 GInputStreamClass
class->read_fn
,这取决于程序是否从套接字、本地文件、win32 文件流式传输,可轮询流等(我的猜测)对于本地文件(我实际上找不到本地文件的定义,但我假设它是来自磁盘的文件),
g_local_file_input_stream_read
我们终于read
在第 158 行找到了系统调用:同样的
write
调用g_local_file_output_stream_write
: