4

我已经从这里下载了系统源代码,但是我无法从包中找到读/写函数的源代码。谁能告诉我在哪里可以获得这些套接字操作函数的代码?

[为什么要查看源代码]
我正在开发一个多线程的 linux 应用程序,并且需要知道调用诸如 write/read/sendmsg 之类的套接字操作函数以同时从不同线程访问同一个 TCP 套接字是否安全。

4

2 回答 2

7

您可以在LXR上的内核源代码中搜索函数和其他内容。

但在你搜索之前,你应该知道 write/read/sendmsg 是系统调用,它们的定义不像通常的函数。当你使用read()时,sys_read()实际上是有效的,它本身的定义也很混乱:这里

这是write()sendmsg()

如果你想了解更多关于系统调用的定义,可以阅读 Linux Kernel Development 的第 5 章。

于 2013-05-25T10:53:02.927 回答
3

1)找出你想查看的库提供的功能

例如“人读”

NAME
   read - read from a file descriptor

SYNOPSIS
   #include <unistd.h>

   ssize_t read(int fd, void *buf, size_t count);

2) 定位头文件,例如“/usr/include/unistd.h”

3) 找出提供此文件的软件包,例如 Debian/Ubuntu

pwadas@kehillah:~$ dpkg -S /usr/include/unistd.h 
libc6-dev: /usr/include/unistd.h

4) 下载源码包并浏览代码

各种库中可能有许多“读取”功能。你可能想试试

man 7 socket
man 7 tcp 

或其他相关来源。

于 2013-05-25T09:45:06.013 回答