小编MOH*_*MED的帖子

如何为内核模块makefile添加包含路径

如何为内核模块makefile添加包含路径?我想在test_module.c中包含"test_kernel.h"."test_kernel.h"驻留在其他目录"inc"中我在Makefile中的以下解决方案中尝试但是它不起作用:

obj-m += test_module.o

test_module:
    $(MAKE) -C "$(LINUX_DIR)" -Iinc $(MAKE_OPTS) modules
Run Code Online (Sandbox Code Playgroud)

c makefile linux-kernel

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

如何知道用于构建linux的gcc版本?

我使用OpenWRT.它是嵌入式系统的Linux发行版

我想知道用于编译linux的gcc版本

我在网上做了一些研究但没有结果.

我试图对linux OpenWRT中的一些现有二进制文件执行这些命令(如wget)

strings -a <default binary> | grep "GCC"
strings -a <default binary> | grep "gcc"
Run Code Online (Sandbox Code Playgroud)

但我没有得到任何结果

即便是

strings -a  /lib/libgcc_s.so.1 | grep  "gcc"
strings -a /lib/libuClibc-0.9.30.1.so | grep   "gcc"
Run Code Online (Sandbox Code Playgroud)

没有给出任何结果

有没有办法知道使用gcc构建整个linux(用户空间和内核空间)?

c c++ linux gcc openwrt

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

指针比较"<"与一个超过数组对象的最后一个元素

我知道<只有当指针指向相同的内存空间(如数组)时才允许在C标准中使用指针比较.

如果我们采取一个数组:

int array[10];
int *ptr = &array[0];
Run Code Online (Sandbox Code Playgroud)

在比较 ptr,以array+10允许吗?array+10指针是否在数组内存之外被考虑,因此不允许进行比较?

for(ptr=&array[0]; ptr<(array+10); ptr++) {...}
Run Code Online (Sandbox Code Playgroud)

c c++ comparison pointers

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

如何在bash中将数组元素启动为0?

declare -a MY_ARRAY=()
Run Code Online (Sandbox Code Playgroud)

在bash中以这种方式声明数组是否会将所有数组元素都引发为0?

如果没有,如何启动数组元素为0?

linux bash shell

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

如何使用0的scanf宽度说明符?

如何使用0的scanf宽度说明符?
1)无限制的宽度(如使用cywin gcc 4.5.3版所示)
2)UB
3)还有其他什么?

我的应用程序(未显示)动态地形成宽度说明符,作为scanf()的更大格式字符串的一部分.很少会"%0s"在格式字符串的中间创建一个.在这种情况下,它的目标字符串%0s只有1个字节的空间用于scanf()存储具有\0上述行为#1的空间会导致问题.

注意:以下测试用例使用常量格式.

#include <memory.h>
#include <stdio.h>

void scanf_test(const char *Src, const char *Format) {
  char Dest[10];
  int NumFields;
  memset(Dest, '\0', sizeof(Dest)-1);
  NumFields = sscanf(Src, Format, Dest);
  printf("scanf:%d Src:'%s' Format:'%s' Dest:'%s'\n", NumFields, Src, Format, Dest);
}

int main(int argc, char *argv[]) {
  scanf_test("1234" , "%s");
  scanf_test("1234" , "%2s");
  scanf_test("1234" , "%1s");
  scanf_test("1234" , "%0s");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

scanf:1 Src:'1234' Format:'%s' Dest:'1234'  
scanf:1 Src:'1234' Format:'%2s' Dest:'12'  
scanf:1 …
Run Code Online (Sandbox Code Playgroud)

c scanf

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

如何从字符串中提取数字?

我有字符串包含一个路径

string="toto.titi.12.tata.2.abc.def"
Run Code Online (Sandbox Code Playgroud)

我想只从这个字符串中提取数字.

要提取第一个数字:

tmp="${string#toto.titi.*.}"
num1="${tmp%.tata*}"
Run Code Online (Sandbox Code Playgroud)

要提取第二个数字:

tmp="${string#toto.titi.*.tata.*.}"
num2="${tmp%.abc.def}"
Run Code Online (Sandbox Code Playgroud)

因此,要提取参数,我必须分两步完成.如何一步提取数字?

linux bash shell substring sh

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

使用TortoiseGit撤消git提交

我在Windows中使用TortoiseGit作为我的git项目.

我在我的项目上做了一个本地提交.我想撤消它.

如何用TortoiseGit撤消git commit?不丢弃我的更改

git commit tortoisegit

7
推荐指数
2
解决办法
4417
查看次数

如何使用本地提交生成git补丁

我正在为开源项目的开发做出贡献,该项目使用git作为源代码的存储库.

在对源代码进行一些修改后,我想生成一个包含我的签名(电子邮件地址和我的名字)的补丁,并将其发送给开源项目维护者.

我该怎么做?

git

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

数组中未初始化元素的值是多少?

我有以下代码

int t[] = {
        [1] = 45,
        [2] = 33
    };
Run Code Online (Sandbox Code Playgroud)

t[0]在这种情况下,价值是多少?它会包含垃圾吗?

c initialization

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

如何使函数异步信号安全?

我有以下sigaction处理函数

void signal_term_handler(int sig)
{
    printf("EXIT :TERM signal Received!\n");
    int rc = flock(pid_file, LOCK_UN | LOCK_NB);
    if(rc) {
        char *piderr = "PID file unlock failed!";
        fprintf(stderr, "%s\n", piderr);
        printf(piderr);
    }
    abort();
}
Run Code Online (Sandbox Code Playgroud)

有人告诉我,flockprintf不是异步信号安全.我flock在这个列表中找不到备用的异步信号安全功能 .

并根据以上链接:

当信号中断不安全的函数并且信号捕获函数调用不安全的函数时,行为是不确定的

有没有办法使flock 异步信号安全?或者,flock当我收到TERM信号时,还有其他解决方案吗?

c c++ linux asynchronous signals

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