小编ppa*_*dey的帖子

'EAGAIN' 或 'EWOULDBLOCK' 之间的区别

我需要了解 EAGAIN 和 EWOULDBLOCK 之间的区别,因为我看到许多源代码仅针对 EAGAIN 进行检查(可能两个代码代表相同的数字,请在此处纠正我。)

我的部分知识:如果发送方缓冲区已满且接收方未接收任何数据,则用于阻塞套接字,如果调用 send(),发送方将被挂起。这是因为一旦接收器读取数据,它在缓冲区中使用的空间就可用于新数据。如果您的套接字处于“非阻塞”模式,则“send()”将失败并显示“EAGAIN”或“EWOULDBLOCK”。

它们是否总是相同的数字,或者是否存在需要区别对待的情况。?

sockets operating-system tcp

9
推荐指数
2
解决办法
1万
查看次数

动态加载,动态链接

我正在阅读动态加载和动态链接之间的区别。(动态加载与动态链接。)从那里我找到了 Jeff Darcy结合链接和加载的有用答案

在第三种类型中,即动态加载、动态链接,我们使用dlopen()函数来获取该库的句柄并尝试解析符号。目标文件在程序控制下(即启动后)动态加载,调用程序和库中的符号根据当时进程可能唯一的内存布局进行解析。

有人可以回答以下问题:

  1. 如何dlopen()打开大于与共享的库链接的其他方法不同(有利)。例如:我已经看到“ libssl ”与dlopen().

    我们会得到什么好处呢。这仅与库版本控制有关吗?

  2. 他所说的“符号是根据当时进程可能唯一的内存布局解析的”是什么意思

c dynamic-linking dynamic-loading libraries

5
推荐指数
0
解决办法
435
查看次数

fputs 与 fwrite 在安全性方面

我正在编写一个应用程序,它必须从文件中找到子字符串并将该子字符串写入某个不同的文件中。为了写入文件,我使用 fputs,但有人告诉我检查更安全的版本来写入文件。

while (fgets(line, MAX_LINE_LEN, fp1) != NULL) {

        if (pname_count < 1) {
            if (strstr(line, p_name)) {
                pname_count++;
                fputs(strstr(line, p_name), fp2);// danger.
                continue;
            }
        }
       //Remaining code

    }
Run Code Online (Sandbox Code Playgroud)

按照下面的两个链接,但没有得到我的确切答案。

gets() 和 fputs() 是危险函数吗?

C 中的 fputs 危险

有人可以解释一下安全方面“fputs”的漏洞是什么吗?

由于 fwrite 需要写入文件的字符数,这是否会使 fwrite 比 fputs 更安全?

c unsafe

0
推荐指数
1
解决办法
1万
查看次数