我在哪里可以看到系统API的源代码,如linux的读/写?

时间:2013-05-25 09:30:44

标签: linux sockets ubuntu tcp

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

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

2 个答案:

答案 0 :(得分:5)

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

但是在搜索之前,你应该知道write / read / sendmsg是系统调用,它们的定义通常不像函数。 当你使用read()时,sys_read()实际上是有效的,并且它自己的定义也会混淆:here

此处为write()sendmsg()

如果您想了解更多关于系统调用的信息,例如他们的定义,您可以阅读Linux内核开发的第5章。

答案 1 :(得分:3)

1)找出想要查看

源的库提供的功能

e.g。 “男人读”

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 

或其他相关来源。