小编Sha*_*baz的帖子

Git:停止git push

我正在将一个大文件推送到git,但连接速度很慢.什么是最安全的终止此推送(推中)的方法,并在我有更好的连接时恢复它?

git

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

28
推荐指数
2
解决办法
1506
查看次数

如何获取结构中的位数组?

我正在思考(因此我正在寻找一种方法来学习这个,而不是更好的解决方案),如果有可能在结构中获得一个位数组.

让我举一个例子来证明.想象一下这样的代码:

#include <stdio.h>

struct A
{
    unsigned int bit0:1;
    unsigned int bit1:1;
    unsigned int bit2:1;
    unsigned int bit3:1;
};

int main()
{
    struct A a = {1, 0, 1, 1};
    printf("%u\n", a.bit0);
    printf("%u\n", a.bit1);
    printf("%u\n", a.bit2);
    printf("%u\n", a.bit3);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在此代码中,我们在结构中包含4个单独的位.它们可以单独访问,将位操作的工作留给编译器.我想知道的是,如果这样的事情是可能的:

#include <stdio.h>

typedef unsigned int bit:1;

struct B
{
    bit bits[4];
};

int main()
{
    struct B b = {{1, 0, 1, 1}};
    for (i = 0; i < 4; ++i)
        printf("%u\n", b.bits[i]);
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c c++ internals

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

gcc编译"无法计算目标文件的后缀:无法编译"

我实际上正在阅读LFS书籍(版本7.1),我在第53页被阻止.尝试编译gcc,我尝试了以下命令:

./configure --target=$LFS_TGT --prefix=$LFS/build/gcc-build --disable-nls\
--disable-shared --disable-multilib --disable-decimal-float --disable-threads\
--disable-libmudflap --disable-libssp --disable-libgomp --disable-libquadmath\
--disable-target-libiberty --disable-target-zlib\
--enable-languages=c\
--without-ppl --without-cloog\
--with-mpfr-include=$LFS/source/mpfr/src
--with-mpfr-lib=$LFS/source/mpfr/src/.libs\
--with-gmp-include=/mnt/LFS/source/gmp\
--with-gmp-lib=/mnt/LFS/source/gmp/.libs\
--with-mpc-include=/mnt/LFS/source/mpc/src\
--with-mpc-lib=/mnt/LFS/source/mpc/src/.libs
Run Code Online (Sandbox Code Playgroud)

运行gcc的配置脚本(当然我已经编译了mpfr,mpc和gmp).但是一旦我发布:

make -j4
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

checking for suffix of object files... configure: error: in `/mnt/LFS/source/gcc-4.6.2/x86_64-lfs-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[1]: *** [configure-target-libgcc] Error 1
Run Code Online (Sandbox Code Playgroud)

我试图谷歌为它,并尝试了我找到的解决方案但没有任何效果.有谁知道我为什么会收到这个错误?

linux compiler-construction gcc linux-from-scratch

25
推荐指数
3
解决办法
3万
查看次数

程序可以输出自己的副本

我认为这可能是一个经典问题,但我不知道答案.一个程序可以输出自己的副本,如果有的话,是否有一个简短的程序来执行此操作?

我不接受"空程序"作为答案,我不接受有权访问自己的源代码的程序.相反,我在想这样的事情:

int main(int argc, char** argv){ printf("int main(argc, char** argv){ printf...
Run Code Online (Sandbox Code Playgroud)

但我不知道如何继续......

compression algorithm complexity-theory quine

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

用户和内核空间之间的共享信号量

精简版

是否可以在用户空间和内核空间之间共享信号量(或任何其他同步锁)?命名的POSIX信号量具有内核持久性,这就是为什么我想知道是否有可能从内核上下文创建和/或访问它们.

由于有关正常使用POSIX信号量的大量信息,搜索互联网并没有多大帮助.

长版

我正在为实时系统开发一个统一的界面,我在其中添加了一些书籍,由信号量保护.这些书籍保留是在资源分配和解除分配上完成的,这是在非实时环境中完成的.

使用RTAI,等待和发布信号量的线程需要处于实时上下文中.这意味着使用RTAI的命名信号量意味着在用户空间中的每个等待/发布之间切换实时和非实时上下文,更糟糕的是,为内核空间中的每个sem/wait创建一个短实时线程.

我正在寻找的是一种在内核和用户空间之间共享正常Linux或POSIX信号量的方法,这样我就可以安全地在非实时环境中等待/发布它.

任何有关此主题的信息将不胜感激.如果这是不可能的,你还有其他任何想法如何完成这项任务?1

1一种方法是添加系统调用,在内核空间中具有信号量,并让用户空间进程调用该系统调用,并且信号量将全部在内核空间中进行管理.如果我不是因为这个而不必修补内核,我会更高兴.

c semaphore linux-kernel

21
推荐指数
2
解决办法
7217
查看次数

为什么我们不能使用双指针来表示二维数组?

为什么我们不能使用双指针来表示二维数组?

arr[2][5] = {"hello","hai"};
**ptr = arr;
Run Code Online (Sandbox Code Playgroud)

这里为什么双指针(**ptr)在这个示例中不起作用?

c

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

如何充分利用堆栈跟踪(来自内核或核心转储)?

如果你的内核模块崩溃,你很幸运,你会得到一个带有大量信息的日志,例如寄存器中的值等.一个这样的信息是堆栈跟踪(核心转储也是如此,但我最初问这个内核模块).举个例子:

[<f97ade02>] ? skink_free_devices+0x32/0xb0 [skin_kernel]
[<f97aba45>] ? cleanup_module+0x1e5/0x550 [skin_kernel]
[<c017d0e7>] ? __stop_machine+0x57/0x70
[<c016dec0>] ? __try_stop_module+0x0/0x30
[<c016f069>] ? sys_delete_module+0x149/0x210
[<c0102f24>] ? sysenter_do_call+0x12/0x16
Run Code Online (Sandbox Code Playgroud)

我的猜测是,+<number1>/<number2>它与发生错误的函数的偏移量有关.也就是说,通过检查这个数字,或许可以查看汇编输出,我应该能够找到发生此错误的行(更好的是,指令).那是对的吗?

我的问题是,这两个数字究竟是什么?你如何利用它们?

c gcc stack-trace

18
推荐指数
1
解决办法
4784
查看次数

(int*)0是否为空指针?

这可以被认为是这个问题的扩展(我只对C感兴趣,但添加C++来完成扩展)

6.3.2.3.3中的C11标准说:

值为0的整型常量表达式或此类表达式转换为类型void *称为空指针常量.

我个人对此的看法是0并且(void *)0表示空指针,其整数值实际上可能不是0,但是不包括0强制转换为任何其他类型.

但是,标准然后继续:

如果将空指针常量转换为指针类型,则生成的指针称为空指针,...

它包含(int *)0为空指针,因为强制转换是一种显式转换(C11,6.3),它在转换方法下列出.

然而,令我惊讶的是以下短语

...或者这样的表达式转换为void *...

有了上面的语义,这句话​​似乎完全没用.问题是,这句话完全没用吗?如果没有,它有什么影响?因此,是否(int *)0为空指针?


另一个可以帮助讨论的问题如下.被(long long)123视为"123转换为long long",或"123与类型long long".换句话说,有没有转换(long long)123?如果没有,则上面的第二个引用包括(int *)0为空指针.

c null-pointer language-lawyer

18
推荐指数
2
解决办法
8331
查看次数

如何打开.a文件

我有一点问题:我必须打开一个具有.a扩展名的链接器文件.我使用Dev-C++.

c++ linker file .a

17
推荐指数
2
解决办法
4万
查看次数