我有一个在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) 要从源代码构建 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 保存为新的默认配置。
是否可以在规范文件中为子包设置单独的 %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) 我已经将 pthreads 用于并发程序,主要使用自旋锁、互斥锁和条件变量。
我开始研究使用 std::thread 和 std::mutex 的多线程,我注意到 pthread 中似乎没有与自旋锁等效的东西。
有谁知道这是为什么?