自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(299)
  • 资源 (10)
  • 论坛 (125)
  • 收藏
  • 关注

原创 返回函数指针的函数与signal函数原型分析

如果一个函数返回的是一个函数指针,那么这个函数的原型应该怎么写呢?

2021-06-17 23:55:16 4

转载 C++对象的内存布局

转载自CoolShell:https://coolshell.cn/articles/12176.html介绍C++对象的内存布局

2021-05-29 10:23:30 32

原创 多级指针存在的意义

多级指针存在的意义

2021-05-22 13:30:08 24

转载 C++类的内存布局

关于C++中类的内存布局,是比较基础而重要的一个内容。先转一篇老文章,因其使用了Visual Studio的特殊功能而能够写得很简单清晰,不过当时作者用的应该是32机器,故指针大小是4字节而不是8字节。笔者手头没有Visual Studio,故转载之。也可以按陈皓早年的文章用打印地址的方式分析。不过因为本文的方式非常清晰易懂,故还是想转载下这篇。遇到与64位的不同处,本文会略作说明。本文对原文略作了一些增删: 增加了前2节,对第3节做了不少的删减合并与结构调整,不过基本保留了原图与代码。原文地址:

2021-04-18 09:45:13 39

原创 当调用类的成员函数时,调用的是哪个

想一想,自己写编译器,会怎么实现

2021-04-15 22:48:33 38

原创 简介dynamic_cast

dynamic_cast 不为人注意的2个点dynamic_cast < type-id > ( expression)该运算符把expression转换成type-id类型的对象。Type-id可以是类的指针、类的引用或者void*。如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。2个注意点:父类必须含有虚函数。否则编译报错: source type is not polymorp

2021-03-29 07:07:41 20

原创 C++指针比较

C++指针比较

2021-03-22 22:47:15 30

原创 简介shared_ptr

多年前写了一篇shared_ptr简介的博客,现在觉得写得不好,就重写一下。加了一些代码和新的内容: aliasing constructor 和 owner_before.

2021-03-21 00:48:08 47

转载 简介内存模型与C++11的memory_order

先看一段代码#include <iostream>#include <thread>int a = 0;int b = 0;void func1(){ a = 1; b = 2;}void func2(){ std::cout << a << "," << b << std::endl; // 不确定}int main(void){ std::thread t1(func

2021-03-17 23:57:44 59

原创 emplace_back/emplace 与 push_back/insert 效率的详细比较

emplace_back/emplace 与 push_back/insert 的效率比较在 STL 的容器中,除了给 vector 等序列容器定义了push_back方法之外,还定义了emplace_back方法; 除了给 map 等关联容器定义了insert方法外,还定义了emplace方法。那么,emplace_back/emplace 和 push_back/insert 的区别是什么?前者是否比后者更快呢?区别分析首先谈谈区别。如果要将一个结构体类型的实例,放入容器中,一般有2个步骤:

2021-03-16 00:06:36 69

原创 C++11中的原子类型

C++11 的 template <class T> struct atomic;是一个模板结构体,用来将普通类型转换成原子类型。原子对象的主要特征是,从不同的线程访问此包含的值不会引起数据竞争(即,这样做是定义良好的行为,并且访问已正确排序)。此外,原子对象具有通过指定不同的内存顺序(memory order)来同步访问其线程中其他非原子对象的能力。使用原子对象就不再需要锁了,从而使得性能大大提高。那么性能到底提高了多少呢?笔者写了个程序验证了一下。程序如下:// g++ 1.cpp

2021-03-12 20:51:03 81

原创 lock-free编程系列

lock-free编程,讲究的是高效率,因此不能再使用锁,而是使用原子性操作。而原子性操作的实现,可能有多种方式,比如,

2021-03-11 23:20:19 71

原创 简介 Tagged Pointer (标记指针)

在计算机科学中,Tagged Pointer 是一个指针(内存地址),它具有与其关联的附加数据,例如,indirection bit 或 引用计数。这些附加数据通常是“折叠”在指针中,意思就是,利用内存寻址的某些属性存储在表示内存地址的数据中。该名称来自 “tagged architecture” system,该系统在硬件级别保留位以指示每个单词的含义。附加数据被称为“标签”,尽管严格说来,“标签”是指数据类型,而不是数据; 但是,“tagged pointer”的用法无处不在。将tag折叠进指针

2021-03-11 23:11:09 44

原创 简介ABA问题

在多线程计算中,在同步期间会发生ABA问题,当一个位置被读取两次,两次读取具有相同的值,并且“值相同”用于指示“什么都没有改变”时。但是,另一个线程可以在两次读取之间执行并更改值,执行其他工作,然后将值改回,因此,即使第二个线程的工作违反了该假设,也使第一个线程认为“什么都没有改变”。当多个线程(或进程)访问共享数据时,会发生ABA问题。以下是将导致ABA问题的事件序列:进程 P1 从共享内存中读取值 A,进程 P1 被抢占,从而允许进程 P2 运行,进程 P2 在抢占之前将共享内存值 A 修改

2021-03-11 23:05:50 42

原创 简介CAS(比较并交换)- lock-free编程的基石之一

概览在计算机科学中,比较交换(CAS)是用于多线程以实现同步的原子指令。 它将存储位置的内容与给定值进行比较,并且只有它们相同时,才将该存储位置的内容修改为新的给定值。 这是作为单个原子操作完成的。原子性保证了根据最新信息计算出新值; 如果与此同时值已由另一个线程更新,则写入将失败。 操作的结果必须表明它是否执行了替换; 这可以通过简单的布尔响应(此变量通常称为“比较设置”),也可以通过返回从内存位置读取的值(而不是写入该值)来完成。比较和交换操作是以下伪代码的原子版本:// 以下函数视为一个原子操

2021-03-11 22:58:37 56

转载 抢占是如何发生的

进程切换有自愿(Voluntary)和强制(Involuntary)之分,在前文中详细解释了两者的不同,简单来说,自愿切换意味着进程需要等待某种资源,强制切换则与抢占(Preemption)有关。抢占(Preemption)是指内核强行切换正在CPU上运行的进程,在抢占的过程中并不需要得到进程的配合,在随后的某个时刻被抢占的进程还可以恢复运行。发生抢占的原因主要有:1. 进程的时间片用完了,或者 2. 优先级更高的进程来争夺CPU了。抢占的过程分两步,第一步触发抢占,第二步执行抢占,这两步中间不

2021-03-11 22:47:13 37

转载 C++内存管理全景

转载自:https://mp.weixin.qq.com/s/mLE73t6jVpzGLqoxK_iJcg导语深入理解C++内存管理,一文了解所有C++内存问题,万字长文,建议收藏随着人工智能,云计算等技术的迅猛发展,让Python,go等新兴语言流行了起来,很多人以为C++可能已经过时了,确实,C++编程语言走到今天已经有将近40年的历史了,但它依然是当今的主流语言,我们可以看一下世界权威编程语言排行榜,C++依然是属于第一梯队,C++在金融交易系统,游戏,数据库,编译器,大...

2021-02-17 16:41:32 186 1

原创 三道动态规划题

三道简单的动态规划题第一题有 m x n 个格子,机器人在最左上角的格子,星星在最右下角的格子。机器人只能向左和向下走。问:机器人拿到星星,总共有多少种拿法?如下图:思路:问题其实就是从左上角走到右下角,有多少种走法。如果倒过来看,站在右下角的角度,走到右下角,只有2种可能:一是从右下角格子的左边走来;二是从右下角格子的上方走来。所以,假设走到右下角格子的左边的格子有 x 种走法,走到右下角格子的上面的格子有 y 种走法,那么,走到星星的位置总共就是有 x + y 种走法。想到这里,

2021-02-15 19:08:17 60

转载 FSCK与日志文件系统

转载自 FSCK与日志文件系统日志文件系统(Journal File System)解决了掉电或系统崩溃造成元数据不一致的问题,细节参见日志文件系统是如何工作的, 它的原理是在进行写操作之前,把即将进行的各个步骤(称为transaction)事先记录下来,包括:从data block bitmap中分配一个数据块、在inode中添加指向数据块的指针、把用户数据写入数据块等,这些transaction保存在文件系统单独开辟的一块空间上,称为日志(journal),日志保存成功之后才进行真正的写操作–把文件系

2021-01-27 23:23:27 55

转载 日志文件系统是如何工作的

转载自 日志文件系统是怎样工作的文件系统要解决的一个关键问题是怎样防止掉电或系统崩溃造成数据损坏,在此类意外事件中,导致文件系统损坏的根本原因在于写文件不是原子操作,因为写文件涉及的不仅仅是用户数据,还涉及元数据(metadata)包括 Superblock、inode bitmap、inode、data block bitmap等,所以写操作无法一步完成,如果其中任何一个步骤被打断,就会造成数据的不一致或损坏。举一个简化的例子,我们对一个文件进行写操作,要涉及以下步骤:从data block bit

2021-01-27 23:00:54 32

转载 SystemV信号量与POSIX信号量简介

转载自:http://linuxperf.com/?p=25对原文做了一些删减和结构上的优化。SystemV 信号量SystemV 信号量是内核对象,由内核统一管理; 它的存续不依赖于进程,即使进程退出也仍然存在。semget(2): 向内核提出申请,内核根据需要创建新的信号量或关联已存在的信号量,每组信号量都有唯一的ID标识,可以被多个进程共享。semop(2) 或 semtimedop(2): PV操作。semctl(2): 删除信号量。(进程即使不存在,信号量也存在于内核中,除非调用此函

2021-01-14 22:43:06 49

转载 futex简介

找到一篇很好的文章,讲得深入浅出;貌似原网站也很不错。转载自 http://linuxperf.com/?p=23futex (fast userspace mutex) 是Linux的一个基础构件,可以用来构建各种更高级别的同步机制,比如锁或者信号量等等,POSIX信号量就是基于futex构建的。大多数时候编写应用程序并不需要直接使用futex,一般用基于它所实现的系统库就够了。futex的性能非常优异,它是怎样做到的呢?这要从它的设计思想谈起。传统的SystemV IPC(inter proces

2021-01-13 22:38:43 89

原创 在C++中将一个char转换成一个string的10种方法

在C++中将一个char转换成一个string的10种方法

2020-12-27 20:26:39 200

原创 实时信号(real-time signal)和标准信号(standard signal)的区别

实时信号和标准信号有什么区别呢?man 7 signal , 再 search SIGRTMIN. 文档中的描述如下:Real-time signals are distinguished by the following:Multiple instances of real-time signals can be queued. By contrast, if multiple instances of a standard signal are delivered while that

2020-12-22 17:26:17 313

原创 设定Linux C/C++ 程序的执行时限

给Linux C/C++程序设定执行时限时间管理,是每个现代人的必修课。给一个任务固定的执行时间,是控制整体进度的一种常用方法。回到程序中: 如何让一个运行时间可能比较长的Linux C/C++程序能够有一个执行时限呢?这就是本文想解答的一个问题。最直接的方法就是起一个timer,并且安装 SIGRTMIN 信号的处理函数;然后在这个信号处理函数里获取本进程的pid,再向本进程发送 SIGTERM 信号来杀死自己。具体代码如下:// g++ timer.cpp -lrt #include &l

2020-12-21 23:14:53 95

原创 解决git错误一则(unable to update local ref)

自Windows上更新了git版本之后,git pull 出错,关键字: “cannot lock ref”, “unable to resolve reference”, “reference broken”, “unable to update local ref”.$ git pullerror: cannot lock ref 'refs/remotes/origin/xxx/yyy/zzz': unable to resolve reference 'refs/remotes/origin/x

2020-12-17 22:43:34 631

转载 底层原理:垃圾回收算法是如何设计的

转载自:阿里技术https://mp.weixin.qq.com/s/iklfWLmSD4XMAKmFcffp9g如果大家关注 JDK,会发现在频繁发布的 JDK 版本中,和垃圾回收相关的 JEP (JDK Enhancement Proposals,Java 增强提案)越来越多了,垃圾回收(Garbage Collection,GC)正处于方兴未艾的阶段。譬如,在 JEP-248 中 G1 替代了并行垃圾回收器成为 JVM 中默认的垃圾回收器,JEP-333 加入了实验性质的 ZGC;最新的 JEP.

2020-12-01 09:39:31 172

原创 C++的函数对象

函数对象,又叫仿函数或函数子,英文是 function object 或 functor. 一个实现了函数调用操作符(即 operator()) 的类或结构体,就是仿函数。

2020-11-29 20:56:19 58

原创 用struct做unordered_map的key

以struct作为unordered_map的key本篇文章着重讨论如何在STL的 unordered_map 中以 struct 作为 key.unordered_map 是STL中的关联容器,自然就是一个模板类。其声明如下:template < class Key, // unordered_map::key_type class T, ..

2020-11-28 13:47:25 514

原创 农心杯三国围棋擂台赛中轮空队的取胜概率

今年的农心杯三国围棋擂台赛进行地如火如荼。到目前为止,中日韩三队每队都只剩下了2个人。有人提出,三个队进行擂台赛时,首次轮空的那个队,其胜率有多高呢?假设任意2个棋手对弈,胜率均为50%.就这个问题,笔者写了一个小程序。算法是用递归做深度优先搜索;数据结构是用3个数字记录每队的剩余人数,另用一个变量记录当前对弈双方。具体程序如下:#include <iostream>using namespace std;enum RaceParty { AB = 0, AC,

2020-11-27 22:06:11 164

原创 谈谈工业级代码及其问题自定位能力的实践

谈谈工业级代码及其问题自定位能力的实践实际的软件产品是必须以工业级代码来实现的,而不是为了 POC 写的快速实现代码或玩具代码。为什么需要工业级代码的实现呢?工业级代码有什么好处呢?工业级代码的健壮性很强,不容易崩溃。即使出现了一些意料之外的异常情况,也能比较友好地处理,不会造成糟糕的用户体验,如闪退等。工业级代码自带问题定位能力。没有bug的软件以前没有出现过,以后也基本不会出现。出现bug,但能迅速定位到问题所在,就是工业级代码的一个重要特征。工业级代码的性能已经优化得比较强了。虽然不能说再也

2020-09-12 11:00:02 82

原创 写一个实用的信号处理函数

有的时候,我们的进程或daemon会被莫名其妙地杀死。凶手是谁?这往往并不容易定位。虽然SIGKILL和SIGSTOP信号并不能被捕捉,但其他很多杀死进程的信号还是可以被捕捉并被处理的,如:SIGTERM、SIGINT、SIGABRT. 本文就是介绍这样一个完整的信号处理程序,用以记录凶杀及其幕后主使。问题与分析问题描述以处理 SIGTERM 信号为例,写一个信号处理函数。要求:能够追踪到信号的发送者及其所有祖先进程并打印它们的pid和命令名。处理完以上工作后,让原系统配置的信号处理函数来处理此

2020-07-17 23:09:35 145

原创 多维vector去重

对于二维数组,比如 vector<vector> 这样的,如何去重呢?和shell脚本很像。shell脚本是 xxx | sort | uniq ;C++代码要记住3个关键词: sort, unique, erase1> 先sort,然后才可能做unique;2> unique完了之后,iterator指向最后一个元素之后,于是erase从此处至end()即可。这里比较神奇的是sort和unique可以直接比较2个一维 vector<int> 的大小。具体

2020-06-11 00:00:11 346

原创 实现正则中的通配符匹配及编程感想

实现正则中的通配符比较及编程总结很久以前,刚接触正则表达式的时候,惊讶于它有如此强大的匹配功能;也略微想了一下应该如何实现正则表达式的匹配功能,当时就觉得头大,连个星号的匹配也没想清楚,就放弃了。现在很偶尔地刷刷LeetCode上的题。这两天刚好碰到一个通配符问题:要求实现问号(?)和星号(*)通配符的功能。于是就仔细思考了一下,用了两三天的业余时间,最终把问题解决了。在回顾整个解决过程时,发现整个编程过程由一次基本实现和三次大改进构成。而这三次较大的改进都涉及到编程中一些重要、常用,却并不复杂的技巧,

2020-05-16 22:35:53 150

原创 自定义gdb命令打印STL容器与数据成员的

前面2篇博客分别介绍了gdb脚本的语法及应用以及使用Python API自定义gdb命令,而在gdb中打印STL容器的一些信息,仍不是非常方便,最好也能自定义一些命令进行处理。有高人推荐了GitHub上的一篇博客,里面记述了这样的命令,范围涵盖还是比较广泛。仔细看代码的注释,似乎是美国名校的几位PhD早年间的作品。粘贴如下:#

2020-05-10 19:26:15 232

原创 用户自定义gdb命令的Python实现

使用gdb调试的时候,人们往往会希望有一些命令能实现自己特殊的需求,但实际上gdb本身并没有提供这样的命令。对这些用户需求,其实常可以使用gdb的Python API(或其他语言的API)来实现。首先,Python API的总帮助页在这里:GDB Python API其中常用的有关于Breakpoint和Command相关的API:Break Point APICommand API...

2020-05-06 00:38:18 303

原创 用gdb脚本进行自动化调试

本文首先介绍用于自动化调试的gdb脚本的基本语法和基本用法,然后给出程序实例和调试实例。在使用gdb调试程序的时候,如果想让调试自动化,该怎么办呢?比如,想关闭 confirm,关闭 pagination,打开 print pretty, 设置 system root 为当前目录,等等。如果是每次运行gdb都希望自动实现这些简单的设置,那么可以写在 ~/.gdbinit 文件中。如下:#~...

2020-05-03 23:30:37 1003

原创 从右值到完美转发

C++11中明确了右值的概念,引入了右值引用、引用折叠、完美转发等概念及功能。这一系列的概念及功能是一脉相承,由浅入深的。笔者为此写了三篇文章来逐步介绍这些。现集中在此文中,作为一个专辑。简介C++11中的左值、纯右值及将亡值谈谈右值引用详解模板参数推导、引用折叠和完美转发C++作为非常复杂的一门语言,由此可见一斑。不过一旦弄懂,也就不会觉得那么复杂了。希望上面这些文章会对读者有些帮助...

2020-04-11 15:22:46 85

原创 详解模板参数推导、引用折叠和完美转发

在前面的2篇博文中,分别介绍了左值右值和右值引用。本文意在介绍模板参数推导规则、引用折叠和完美转发。右值引用(准确地说,是万能型引用,即universal reference),模板参数推导规则和引用折叠,这三者的结合,实现了完美转发。本文将依次介绍以上三者。证明引用、左值引用、右值引用的方法进入正题之前,我们先介绍一下,如何证明一个变量是引用类型,是左值引用还是右值引用。有网文使用的是...

2020-04-11 15:12:37 315 1

原创 谈谈右值引用

左值与右值这在之前的一篇博文中有详细介绍,这里再简单说一下。左值:可使用&符号取地址可位于赋值操作符=的左侧,也可位于右侧右值:不能使用&符号取地址只能位于赋值操作符的右侧老式的swap函数template<class T> swap(T& a, T& b) // 老式的swap函数{ T tmp(a); ...

2020-04-05 11:40:17 154

Lua编程语言详细介绍与实例(PPT)

包含3个PPT: 1. How Lua works with C/C++ (36 pages + 4个示例程序) 2. Important concepts in Lua (46 pages: module and package, function and closure, metatable and metamethod, OO) 3. Basic in Lua (37 pages: 介绍Lua的基础语法)

2012-10-06

Lua5.1全三套:Lua Programming(中英文版)+中文手册

本文件包括Lua5.1的《Lua Programming》第二版的中文版、英文版以及Lua5.1的中文手册。

2012-07-15

source navigator NG-4.4 windows版

可以用来替代sourceinsight的一种代码阅读工具

2012-01-31

Lua 5.1 manual 笔记

Lua 5.1 manual 笔记,由FinixLei整理,中文版。

2011-12-27

MFC简明教程

一本简明介绍MFC的书籍。

2008-01-17

设计模式笔记(精版)

Finix原创的设计模式笔记。

2008-01-24

Perl24学时 详细笔记

Finix呕心沥血整理

2008-01-31

深入浅出MFC文档视图架构教程(天极网)

一个来自天极网的教程,由Finix整理

2008-01-26

精版Effective STL读书笔记

Finix的精版Effective STL读书笔记

2008-11-24

UML教程的读书笔记

自己的UML读书笔记,以实例见长,理论上总结比较简单。

2011-02-13

执假以为真的留言板

发表于 2020-01-02 最后回复 2020-01-02

医疗器械行业的嵌入式开发如何?

发表于 2011-08-25 最后回复 2019-05-29

char * 定义的字符串存放在何处?

发表于 2007-11-30 最后回复 2019-03-08

试编写一个递归函数,用来输出n 个元素的所有子集。

发表于 2008-09-04 最后回复 2017-03-16

试编写一个递归函数,用来输出n 个元素的所有子集。

发表于 2008-09-04 最后回复 2017-03-16

如何将1个矩阵旋转90度

发表于 2008-09-04 最后回复 2017-03-08

地址一样基本类型差不多,值却不一样,编译器如何实现的?

发表于 2013-06-01 最后回复 2013-06-03

没想通为何这个简单实验中总打印不同地址 - 单例模式

发表于 2013-05-19 最后回复 2013-05-19

在自定义的namespace中使用模版,为何连接不成功?

发表于 2013-05-09 最后回复 2013-05-09

谁有Linux下,C或者C++编程的电子版教程

发表于 2006-03-16 最后回复 2012-11-23

C++代码调用一个可执行程序后,想在5分钟后kill掉它,应当如何做?

发表于 2007-04-03 最后回复 2012-11-23

医疗器械行业的嵌入式开发如何?

发表于 2011-08-25 最后回复 2011-09-03

好像是一个比较经典的问题

发表于 2011-01-09 最后回复 2011-01-12

去哪个公司比较好呢?

发表于 2010-12-20 最后回复 2010-12-30

求一Perl程序:打印出一篇文章中所有不相同的单词

发表于 2009-05-09 最后回复 2009-05-12

我的Perl发送邮件程序为何无法显示正文?

发表于 2009-04-05 最后回复 2009-04-05

关于telnet到远程机器后执行命令的问题

发表于 2009-01-20 最后回复 2009-01-21

F10安装成功,但看不见引导,我的menu.lst应该怎么写?

发表于 2008-12-08 最后回复 2008-12-08

perl数组最多能放多少个元素

发表于 2008-11-19 最后回复 2008-11-20

一个关于替换的非常简单的小问题,给50分!

发表于 2008-11-20 最后回复 2008-11-20

求一个简单的递归程序

发表于 2008-09-04 最后回复 2008-09-13

如何知道DOS下一条命令执行成功与否

发表于 2008-09-06 最后回复 2008-09-09

如何判断2个三角形如何相交?

发表于 2008-09-04 最后回复 2008-09-08

试编写一个递归函数,用来输出n 个元素的所有子集。

发表于 2008-09-04 最后回复 2008-09-05

试编写一个递归函数,用来输出n 个元素的所有子集。

发表于 2008-09-04 最后回复 2008-09-05

得到数字的每一个bit的问题

发表于 2008-07-04 最后回复 2008-07-04

VC6对STL的支持如何,比如对sort

发表于 2008-07-03 最后回复 2008-07-04

Fedora 9 如何显示中文pdf

发表于 2008-05-28 最后回复 2008-06-04

关于g++安装的几个问题

发表于 2008-05-24 最后回复 2008-05-25

有没有不用安装的C++编译器?

发表于 2008-03-19 最后回复 2008-03-19

如何最快地判断出文件一行的字符数?

发表于 2007-09-03 最后回复 2007-11-27

三个问题--关于多继承以及地址等

发表于 2007-11-18 最后回复 2007-11-22

一个和全排列相关的问题

发表于 2007-11-09 最后回复 2007-11-09

请看这一段简单的代码

发表于 2007-09-29 最后回复 2007-09-29

一个关于多继承的问题

发表于 2007-08-09 最后回复 2007-08-12

关于hash_map的使用和自定义类型

发表于 2007-07-29 最后回复 2007-07-31

关于map的键值类型的问题

发表于 2007-07-27 最后回复 2007-07-27

包含什么头文件后,就可以在Console工程中使用CFileFind类了?

发表于 2007-07-26 最后回复 2007-07-27

如何高效计算文件的行数

发表于 2007-04-18 最后回复 2007-04-22

在线求解-shell编程-如何判断一个目录是空目录

发表于 2007-04-16 最后回复 2007-04-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除