小编ren*_*ack的帖子

如何使用vim缩进文本文件的偶数/奇数行

我只想使用vim在文本文件中缩进偶数行。在vim手册中,提到了缩进技术。但这对行范围或光标所在的特定行都有效。我需要一个命令来对齐整个文件。这在vim中可能吗?请有人对此提出建议。

vi vim

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

Valgrind memcheck 工具显示 0 泄漏,尽管可能存在 memleaks

我需要调查我的 C 项目中的内存泄漏。但在此之前,我只是编写了一个示例程序并交叉编译到ARM-v8-a 64bit OpenWRTlinux平台。通过这个程序,我试图理解 Valgrind 泄漏报告。不幸的是,在这次 valgrind 运行中,没有看到任何泄漏,并期望 memcheck 工具报告 50 字节的泄漏摘要。

Valgrind 工具优化:是,-Os(OpenWRT) and -O2(Valgrind Makefile)
二进制优化:未
使用 libc 标准MUSLOpenWRT ARM 64 位

Why valgrind is not able to intercept malloc calls eventhough binary executes malloc calls?

示例代码:

char *ptr = NULL;
printf("Doing memory alloc\n");
ptr = malloc(50);
if (!ptr) {
    printf("Malloc failure\n");
    return -1;
}
printf("Malloc returned : %p\n", (void *)ptr);
memset(ptr, 0, 50);
strcpy(ptr, "Valgrind leak Analysis!!!\n");
printf("%s\n", …
Run Code Online (Sandbox Code Playgroud)

c valgrind memory-leaks openwrt compiler-optimization

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

getpid()在进程的每个线程中返回不同的值吗?

在Pthreads手册页中,提到了

调用getpid(2)在每个线程中返回不同的值

在LinuxThreads部分中。

我创建了两个线程,并在其中打印了PID。但是,两者的PID都是相同的。

int main () 
{
    //pid_t pid;
    pthread_t tid[2];
    {
        printf("In main, PID : %d, PPID : %d\n", getpid(), getppid());
        pthread_create(&(tid[0]), NULL, &(f),NULL);
        pthread_create(&(tid[1]), NULL, &(g),NULL);
        pthread_join(tid[0], NULL);
        pthread_join(tid[1], NULL);
    }
    return 0;
}

void *g()
{
    printf("My PID in G : %d, PPID : %d\n", getpid(), getppid());
}

void* f()
{
    printf("My PID in F : %d, PPID : %d\n", getpid(), getppid());
}
Run Code Online (Sandbox Code Playgroud)

以下是我得到的输出,

总的来说,PID:5219,PPID:5214
我的PID在F中:5219,PPID:5214
我的PID在G中:5219,PPID:5214

我需要知道我是否在这里误解了什么。

c pthreads

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

从bash中的“key1='val1' key2='val2'”字符串中解析变量而不使用eval

我有一个特定于项目的命令,它以以下形式生成输出:

Parameter1='value1' Parameter2='Value2' ... #变量的单引号值。

但我想明确分配该值并需要打印必须显示相应值的参数。

这里xtc_cmd get是项目特定的 cmd

root@renway:~# FOO=`xtc_cmd get lan_ifname lan_ipaddr lan_netmask`
root@renway:~#
root@renway:~# echo $FOO
SYSCFG_lan_ifname='br1' SYSCFG_lan_ipaddr='10.0.0.1' SYSCFG_lan_netmask='255.255.255.0'
root@renway:~#
root@renway:~# echo $SYSCFG_lan_ifname

root@renway:~# echo $SYSCFG_lan_ipaddr

root@renway:~# echo $SYSCFG_lan_netmask
Run Code Online (Sandbox Code Playgroud)

但是,在变量打印它们的值之后,我尝试了“ eval $FOO ”。由于安全原因,我想跳过'eval'。

分享脚本执行的输出:

root@renway:~# /tmp/test.sh
++ xtc_cmd get lan_ifname lan_ipaddr lan_netmask
+ FOO='SYSCFG_lan_ifname='\''br1'\''
SYSCFG_lan_ipaddr='\''10.0.0.1'\''
SYSCFG_lan_netmask='\''255.255.255.0'\'''
+ echo 'SYSCFG_lan_ifname='\''br1'\''' 'SYSCFG_lan_ipaddr='\''10.0.0.1'\''' 'SYSCFG_lan_netmask='\''255.255.255.0'\'''
SYSCFG_lan_ifname='br1' SYSCFG_lan_ipaddr='10.0.0.1' SYSCFG_lan_netmask='255.255.255.0'
Run Code Online (Sandbox Code Playgroud)

如何实际分配值并打印这些变量。

输入感兴趣的字符串

FOO='SYSCFG_lan_ipaddr='\''10.0.0.1'\'' SYSCFG_sysdate='\'''\''$(date>> /tmp/date.txt)0'\'''\'' SYSCFG_lan_pd_interfaces='\''brlan0 brlan19 brlan20'\'''
Run Code Online (Sandbox Code Playgroud)

预期输出:

foo_SYSCFG_lan_ipaddr=10.0.0.1
foo_SYSCFG_sysdate='$(date>> /tmp/date.txt)0' #single quoted value
foo_SYSCFG_lan_pd_interfaces=brlan0 brlan19 brlan20 #whitespace separated string …
Run Code Online (Sandbox Code Playgroud)

linux bash shell variable-expansion single-quotes

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