小编Ben*_*ber的帖子

git submodule update vs git submodule sync

git文档不让它完全清楚的区别是什么之间git submodule updategit submodule sync为.我也没有在网上找到任何帮助.有人可以帮助我解决这里的不同之处吗?

   update
       Update the registered submodules to match what the superproject expects
       by cloning missing submodules and updating the working tree of the
       submodules. The "updating" can be done in several ways depending on
       command line options and the value of submodule.<name>.update
       configuration variable.
Run Code Online (Sandbox Code Playgroud)

-

   sync
       Synchronizes submodules' remote URL configuration setting to the value
       specified in .gitmodules. It will only affect those submodules which
       already have a URL entry …
Run Code Online (Sandbox Code Playgroud)

git git-submodules

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

复制带有空元素的Bash数组

我在bash(版本4.2.25)中使用空元素复制数组时遇到问题.当我将数组的副本复制到另一个变量时,它不会复制任何空元素.

#!/bin/bash

array=( 'one' '' 'three' )
copy=( ${array[*]} )

IFS=$'\n'

echo "--- array (${#array[*]}) ---"
echo "${array[*]}"

echo
echo "--- copy (${#copy[*]}) ---"
echo "${copy[*]}"
Run Code Online (Sandbox Code Playgroud)

当我这样做时,这是输出:

--- array (3) ---
one

three

--- copy (2) ---
one
three
Run Code Online (Sandbox Code Playgroud)

原始数组包含所有三个元素,包括空元素,但副本不包含.我在这做错了什么?

arrays bash copy

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

如何在bash中组合关联数组?

有没有人知道一种优雅的方式来组合两个关联数组,bash就像你正常的数组一样?这就是我在说的:

在bash中,您可以组合两个常规数组,如下所示:

declare -ar array1=( 5 10 15 )
declare -ar array2=( 20 25 30 )
declare -ar array_both=( ${array1[@]} ${array2[@]} )

for item in ${array_both[@]}; do
    echo "Item: ${item}"
done
Run Code Online (Sandbox Code Playgroud)

我想用两个关联数组做同样的事情,但是下面的代码不起作用:

declare -Ar array1=( [5]=true [10]=true [15]=true )
declare -Ar array2=( [20]=true [25]=true [30]=true )
declare -Ar array_both=( ${array1[@]} ${array2[@]} )

for key in ${!array_both[@]}; do
    echo "array_both[${key}]=${array_both[${key}]}"
done
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

./associative_arrays.sh:line 3:array_both:true:分配关联数组时必须使用下标

以下是我提出的解决方法:

declare -Ar array1=( [5]=true [10]=true [15]=true )
declare -Ar array2=( [20]=true [25]=true [30]=true ) …
Run Code Online (Sandbox Code Playgroud)

bash associative-array

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

使用RNDADDENTROPY将熵添加到/ dev/random

我有一个设备会产生一些噪音,我想将它添加到嵌入式Linux系统中/ dev/random设备的熵池中.

我正在阅读/ dev/random上手册页,我真的不明白你传递给RNDADDENTROPY ioctl调用的结构.

   RNDADDENTROPY
          Add some additional entropy to the input pool, incrementing
          the entropy count.  This differs from writing to /dev/random
          or /dev/urandom, which only adds some data but does not
          increment the entropy count.  The following structure is used:

              struct rand_pool_info {
                  int    entropy_count;
                  int    buf_size;
                  __u32  buf[0];
              };

          Here entropy_count is the value added to (or subtracted from)
          the entropy count, and buf is the buffer of size buf_size
          which gets …
Run Code Online (Sandbox Code Playgroud)

c linux ioctl embedded-linux

7
推荐指数
1
解决办法
3315
查看次数

文字类型:0x1ull与0x1llu

我的gcc编译器允许我将无符号长long(即64位)文字定义为

#define A_LITERAL 0x1ull
Run Code Online (Sandbox Code Playgroud)

- - 要么 - -

#define A_LITERAL 0x1llu
Run Code Online (Sandbox Code Playgroud)

这两个文字陈述之间是否有任何区别.这对其他C编译器来说是否常见?

c literals

6
推荐指数
2
解决办法
3703
查看次数

指针初始化给出了分段错误

我写了一个C程序如下:

情况1

int *a; /* pointer variable declaration */

int b; /* actual variable declaration */

*a=11;

a=&b;/* store address of b in pointer variable*/
Run Code Online (Sandbox Code Playgroud)

它在运行程序时出现分段错误.

我更改了代码如下:

案例2

int *a; /* pointer variable declaration */

int b; /* actual variable declaration */

a=&b;/* store address of b in pointer variable*/

*a=11;
Run Code Online (Sandbox Code Playgroud)

现在它工作正常.

如果有人知道请解释为什么它在CASE 1中给出了分段错误.

c pointers variable-assignment segmentation-fault

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

linux启动期间的内存分配?

我试图在谷歌和这个网站上搜索这个主题,但我找不到合适的答案.

我试图在Linux启动过程中在一个设置的物理地址上分配一个大的连续内存块(几MB).但我仍然不清楚我应该在哪里放置"alloc_bootmem"函数.我在ARM处理器上运行Linux.

  1. AFAIK,有一种方法可以创建一个包含对"alloc_bootmem"的调用的驱动程序,然后将该驱动程序直接编译到内核中.

  2. 另一种方法是在Linux内核源代码中的某处添加"alloc_bootmem".

  3. 我认为存在的最后一种方法是创建一个像boot.rc这样的设置文件?(不确定),以便在启动时Linux将保留我想要分配的内存.

如果有一个明确的方式或链接到这个问题的答案,我真的很感激大家的帮助.基本问题是"我应该在哪里调用"alloc_bootmem"所以它在启动时会起作用吗?"

谢谢,Shahril

linux memory-management linux-kernel

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

套接字-在客户端使用INADDR_ANY

我最近遇到了一篇博客文章该文章描述了使用libev的TCP服务器客户端。服务器用来INADDR_ANY绑定到我熟悉的接口。但是,我也很惊讶地INADDR_ANY在客户端代码中看到。客户端代码上的相关代码如下:

// Create client socket
if( (sd = socket(PF_INET, SOCK_STREAM, 0)) < 0 )
{
  perror("socket error");
  return -1;
}

bzero(&addr, sizeof(addr));

addr.sin_family = AF_INET;
addr.sin_port = htons(PORT_NO);
addr.sin_addr.s_addr = htonl(INADDR_ANY);

// Connect to server socket
if(connect(sd, (struct sockaddr *)&addr, sizeof addr) < 0)
{
  perror("Connect error");
  return -1;
}
Run Code Online (Sandbox Code Playgroud)

具体来说,我对这一行很感兴趣:

addr.sin_addr.s_addr = htonl(INADDR_ANY);
Run Code Online (Sandbox Code Playgroud)

在服务器端,我知道这INADDR_ANY会将端口绑定到所有可用接口,但是我不确定在客户端这有何意义。最后,客户端将需要在特定接口上进行连接。以前,我总是指定IP地址或使用INADDR_LOOPBACK

Linux IP手册页没有讨论INADDR_ANY在客户端使用。我确实在这里找到了另一个Stack Overflow帖子,帖子说OP应该INADDR_ANY …

c sockets linux ip-address

5
推荐指数
2
解决办法
5401
查看次数

什么是sd-bus中的'slot'(C语言)

systemd的sd-bus.h文件中有几个API,可以选择slot参数.以下是一些例子:

int sd_bus_call_async(sd_bus *bus, sd_bus_slot **slot, sd_bus_message *m, sd_bus_message_handler_t callback, void *userdata, uint64_t usec);
int sd_bus_add_filter(sd_bus *bus, sd_bus_slot **slot, sd_bus_message_handler_t callback, void *userdata);
int sd_bus_add_fallback(sd_bus *bus, sd_bus_slot **slot, const char *prefix, sd_bus_message_handler_t callback, void *userdata);
Run Code Online (Sandbox Code Playgroud)

如果调用代码指定NULL然后它变成一个"浮动槽",我猜这意味着调用代码不需要担心它.

我看到的大多数示例源代码都是这个示例项目:https://github.com/tasleson/dbus-signals/blob/6d0e43d02d24ed51a17ce7df15a3a0a64ec0170d/spamsignals.c#L160

它需要一个插槽,然后有一段时间它会取消插槽.但它实际上并没有对它做任何事情.

linux dbus systemd

5
推荐指数
2
解决办法
941
查看次数

Linux信号量:自旋锁或信号?

当前信号量的实现如何工作?它使用自旋锁或信号吗?

如果使用信号,调度程序如何知道调用哪一个?

它在用户空间中如何工作?内核锁定建议使用自旋锁,但用户空间不会.那么信号量的用户空间和内核空间的实现是否也不同?

linux semaphore linux-kernel

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