小编nit*_*ian的帖子

检查符号链接

我的主目录中有一个符号链接ac到同一目录中的另一个文件.

ac - > bc

我知道如何使用shell脚本检查ac是一个符号链接

if [ -L /home/nit/a.c ] ; then
    echo "a.c is a symbolic link"
fi
Run Code Online (Sandbox Code Playgroud)

但我的问题是如何编写一个shell脚本来检查ac是否是一个专门针对bc的符号链接?

谢谢

unix shell symlink

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

由于构造函数初始化列表的优化

如果可能,构造函数应该通过初始化列表初始化其所有成员对象.它比通过构造函数体内的赋值构建构造函数更有效.

有人可以解释一下,为什么在一个例子的帮助下使用初始化列表更有效率?

c++ performance constructor initializer-list

13
推荐指数
3
解决办法
3440
查看次数

如何使用dynamic_cast运算符识别失败的强制转换?

Scott Meyer在他的书中Effective C++dynamic_cast,用于执行安全转换或跨继承层次结构.也就是说,使用dynamic_cast将指针或对基类对象的引用转换为指针或对派生或兄弟基类对象的引用,以便您可以确定转换是否成功.

失败的强制转换由空指针(在转换指针时)或异常(在转换引用时)指示.

我想得到两个代码片段,显示在投射指针的情况下失败的强制转换,并且可以指示投射引用.

c++ pointers dynamic-cast reference

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

spin_lock和mutex_lock期间的Linux内核抢占

当内核空间中spin_lock的进程持有a时,由于以下任何一种情况,该进程无法被抢占:

  1. 当进程的时间片耗尽时
  2. 当高优先级进程变为可运行时
  3. 发生中断时

但是,如果处理器阻塞,休眠或显式调用,则该过程可以产生处理器schedule().我的理解是否正确?

当内核空间mutex_lock中的进程持有a时,由于上面列出的条件为1,2和3,该进程可以被抢占.

locking linux-kernel preemption

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

使用environ打印环境变量

如何使用"environ"在C程序中打印环境变量.

extern char**environ

c environment-variables

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

使用/ etc/passwd-,/ etc/shadow-,/ etc/group-

除了文件:/etc/group,/etc/passwd而且/etc/shadow,我可以在我的linux机器上看到三个文件.

  1. /etc/group-
  2. /etc/passwd-
  3. /etc/shadow-

我无法在我的网站上看到这些文件root filesystem.但是当我尝试使用useradd命令添加一个用户时,这些文件似乎生成了.

所以我想知道这些文件究竟何时创建以及这些文件的用途是什么?

linux passwd user-accounts

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

驱动函数中的静态全局变量和静态局部变量

在我的一个示例Linux内核模块中,我有一个Device_Open在所有函数外部声明为static的变量,以及counter在函数内声明的静态变量device_open.在里面device_open,我增加两个Device_Opencounter.模块插入没有任何错误进入内核,我为我的模块/ dev/chardev创建了一个设备文件.

我知道cat /dev/chardev.我可以看到counter,每次调用都会增加cat /dev/chardev,但Device_Open始终保持为0.与递增变量值相关的行为差异的原因是什么?

以下是用于理解的代码段

static int Device_Open = 0;

static int device_open(struct inode *inode, struct file *file)
{
    static int counter = 0;

    printk(KERN_INFO "Device_Open = %d", Device_Open);
    printk(KERN_INFO "counter = %d", counter);

    if (Device_Open)
        return -EBUSY;

    Device_Open++;
        counter++;

    try_module_get(THIS_MODULE);

    return SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

c linux variables static module

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

初始化类的静态const非整数数据成员

考虑下面的示例程序:

#include <iostream>

using namespace std;

class test
{
   public:
      static const float data;
};

float const test::data = 10;   // Line1


int main()
{
   cout << test::data;
   cout << "\n";

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

请注意Line1示例代码中的注释.

问题:

  1. 正在Line1做日期成员的初始化data
  2. Line1初始化静态const非整数数据成员的唯一方法吗?

c++ initialization const static-members

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

如何通过GCC显示C++类的VTABLE?

我知道如果一个类VTABLE包含至少一个虚函数,那么它将有一个.我想看看的内容VTABLE.有没有办法显示它?

具体来说,是否有一个选项gcc来显示VTABLE一个类?

c++ gcc virtual-functions vtable

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

GCC编译器内联的深度

我研究过那个

内联说明符是编译器的一个提示,它应该尝试生成代码内联,而不是为函数设置一次代码,然后通过通常的函数调用机制调用.

问题:

  1. 如果关闭GCC编译器的优化,是否忽略内联说明符?
  2. 当内联函数被递归调用时,哪个编译器选项确定"内联深度",直到它遵循正常的函数调用机制?
  3. 如果在for循环中调用内联函数,那么相同的"内联深度"是否会进入图片中?

c++ optimization gcc inline-functions

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