小编To1*_*1ne的帖子

使用readdir()读取目录时删除文件

我的代码是这样的:

DIR* pDir = opendir("/path/to/my/dir");
struct dirent pFile = NULL;
while ((pFile = readdir())) {
   // Check if it is a .zip file
   if (subrstr(pFile->d_name,".zip") {
      // It is a .zip file, delete it, and the matching log file
      char zipname[200];
      snprintf(zipname, sizeof(zipname), "/path/to/my/dir/%s", pFile->d_name);
      unlink(zipname);
      char* logname = subsstr(zipname, 0, strlen(pFile->d_name)-4); // Strip of .zip
      logname = appendstring(&logname, ".log"); // Append .log
      unlink(logname);
}
closedir(pDir);
Run Code Online (Sandbox Code Playgroud)

(此代码未经测试,纯粹是一个例子)

关键是:是否允许在使用readdir()循环目录时删除目录中的文件?或者readdir()仍然会找到已删除的.log文件?

c

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

如何检查ls版本

这个主题是关于util'ls'的BSD版本使用参数'-G'为输出着色,而Linux版本使用参数'--color'

设置颜色的环境变量也是不同的:BSD:$ LSCOLORS Linux:$ LS_COLORS

但现在的问题是:我想确定安装了哪个版本(使用一个小的Shell脚本),所以我可以在我的.bachrc文件中设置别名ls和环境.

shell

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

指针指针不支持C++多态

我正在寻找一种清洁指针的正确方法.这里是示例代码:

class Parent {
   protected:
      int m_Var;
   public:
      Parent() : m_Var(0) {}
      virtual ~Parent() {}
      void PubFunc();
};

class Child : public Parent {
   protected:
      bool m_Bool;
   public:
      Child() : m_Bool(false) {}
      virtual ~Child() {}
      void ChildFunc();
};

void RemoveObj(Parent **ppObj)
{
   *ppObj->PubFunc();
   delete *ppObj;
   ppObj = NULL;
}

int main()
{
   Parent* pPObj = NULL;
   Child*  pCObj = NULL;
   pPObj = new Parent();
   pCObj = new Child();

   RemoveObj(&pPObj);
   RemoveObj(&pCObj); // This is line 33
   return 1;
}
Run Code Online (Sandbox Code Playgroud)

但是编译器给出了错误:

classes.cpp:33: …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism pointers

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

获取"make:'目标'无法执行任何操作"的错误

让我用一个例子来说明它.

mkdir test
cd test
touch target
make target
Run Code Online (Sandbox Code Playgroud)

这将导致: make: Nothing to be done for 'target'.

所以make告诉我没有什么可做的.这是因为make没有找到规则target,但因为target已经存在的make告诉我没有什么可做的.

现在,我不希望这样.我希望make在找不到规则时给我一个错误target,即使target已经存在.

我尝试过以下方法:

echo '.DEFAULT:
        echo make: *** No rule to make target `$@'.  Stop.
        false'> Makefile
Run Code Online (Sandbox Code Playgroud)

但是,这并不能阻止化妆使多个目标的时候.

makefile gnu-make

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

标签 统计

c ×1

c++ ×1

gnu-make ×1

makefile ×1

pointers ×1

polymorphism ×1

shell ×1