我从here下载了系统源代码,但是我找不到包中读/写函数的源代码。谁能告诉我在哪里可以获得这些套接字操作函数的代码?
[我为什么要检查源代码]
我正在开发一个多线程的linux应用程序,并且需要知道,如果调用socket操作函数(如write / read / sendmsg)来同时访问来自不同线程的同一个TCP套接字是否安全。
答案 0 :(得分:5)
您可以在LXR上的内核源代码中搜索函数和其他内容。
但是在搜索之前,你应该知道write / read / sendmsg是系统调用,它们的定义通常不像函数。 当你使用read()时,sys_read()实际上是有效的,并且它自己的定义也会混淆:here
如果您想了解更多关于系统调用的信息,例如他们的定义,您可以阅读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
或其他相关来源。