小编use*_*066的帖子

是否可以要求Linux在套接字读取期间对字节进行黑洞处理?

我有一个在Linux Debian 9下运行的c ++程序。我正在从文件描述符中进行简单的read():

int bytes_read = read(fd, buffer, buffer_size);
Run Code Online (Sandbox Code Playgroud)

想象一下,我想从套接字读取更多数据,但是我想先跳过一个已知的字节数,然后再获取我感兴趣的某些内容:

int unwanted_bytes_read = read(fd, unwanted_buffer, bytes_to_skip);

int useful_bytes = read(fd, buffer, buffer_size);
Run Code Online (Sandbox Code Playgroud)

在Linux中,是否存在一个系统范围内的“内置”位置,我可以将不需要的字节转储到该位置,而不必维护不需要的数据的缓冲区(unwanted_buffer如上例所示)?

我想我要寻找的东西MSG_PEEK与套接字世界相反(即),也就是说,内核将bytes_to_skip在下一个有用的recv调用之前从其接收缓冲区中清除。

如果我正在从文件中读取内容,lseek那就足够了。但是,如果您正在从套接字读取并且正在使用分散/聚集I / O,并且要删除其中一个字段,则这是不可能的。

我正在考虑这样的事情:

// send side
int a = 1;
int b = 2;
int c = 3;
struct iovec iov[3];
ssize_t nwritten;

iov[0].iov_base = &a;
iov[0].iov_len  = sizeof(int);
iov[1].iov_base = &b;
iov[1].iov_len  = sizeof(int);
iov[2].iov_base = &c;
iov[2].iov_len  = sizeof(int);

nwritten = writev(fd, iov, 3); …
Run Code Online (Sandbox Code Playgroud)

c++ sockets linux

6
推荐指数
1
解决办法
179
查看次数

Linux 内核:从命令行更新特定模块的配置

要从源代码构建 Linux 内核,我通常会执行以下操作:

make mrproper
make menuconfig
make
Run Code Online (Sandbox Code Playgroud)

在 menuconfig 步骤中,我启用了一些我想要内置到内核中的模块,这些模块不属于默认配置文件 (defconfig)。

现在假设我提前知道要在 menuconfig 中启用哪些模块,但希望通过脚本自动执行构建过程(即非交互式)。我不想在发出 make 之前手动编辑 .config 文件,因为我可能无法正确解析要安装的模块的依赖关系。

有没有办法用类似的东西替换 menuconfig 步骤

make updateconfig module_name

PS 我不想第一次执行 menuconfig,然后将更新的 .config 保存为新的默认配置。

linux linux-device-driver linux-kernel

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

rpm 子包 %install 部分

是否可以在规范文件中为子包设置单独的 %install 部分?

例如,可以为主包指定文件为

%files
Run Code Online (Sandbox Code Playgroud)

对于这样的子包:

%files mysubpackage
Run Code Online (Sandbox Code Playgroud)

然而,我只看过一个

%install
Run Code Online (Sandbox Code Playgroud)

部分,如果我这样做,我会得到一个错误

%install mysubpackage
Run Code Online (Sandbox Code Playgroud)

rpmbuild rpm-spec

4
推荐指数
1
解决办法
1441
查看次数

为什么没有 std:: 等价于 pthread_spinlock_t 就像 pthread_mutex_t & std::mutex 一样?

我已经将 pthreads 用于并发程序,主要使用自旋锁、互斥锁和条件变量。

我开始研究使用 std::thread 和 std::mutex 的多线程,我注意到 pthread 中似乎没有与自旋锁等效的东西。

有谁知道这是为什么?

c++ linux multithreading c++11

4
推荐指数
1
解决办法
491
查看次数