小编IDD*_*DQD的帖子

Linux中的"陈旧文件句柄"是什么意思?

说我打开了一个终端,通过那个终端,我已经cd去了一个目录.通过另一个终端,我删除该目录并从相同的备份恢复它.当我尝试vim从第一个终端的文件,在同一目录中,为什么我收到有关陈旧文件句柄的错误?这是什么意思?(另一方面,我发现可以绕过这个问题cd $(pwd).)

unix linux

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

Bash:让语句与赋值

分配变量var=foo和使用let 之间的区别是什么let var=foo?或者像var=${var}barlet var+=bar?每种方法的优点和缺点是什么?

unix linux bash

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

iostream和命名空间std之间有什么关系?

我目前正在使用" 自学C++ 21天,第二版"一书来学习C++编码,以及Microsoft Visual C++ 2010 Express.在第1章的最后,有一个关于编写和编译以下代码的小练习:

#include <iostream>

int main ()
{
    cout << "Hello World!\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

很简单吧?但令我惊讶的是,由于此错误,代码无法编译:

错误C2065:'cout':未声明的标识符

我开始淘网,并很快找到了一些解决方案在这里.原来我必须添加 using namespace std;到我的代码!

但是书中没有提到命名空间,所以我认为这本书已经过时了.(它使用#include <iostream.h>预处理器指令!)一些网络研究后,我发现了很多关于命名空间的信息,namespace std与一些历史背景以及<iostream.h><iostream>,以及新信息的所有这种流动是相当混乱给我.(更不用说关于医疗性病的所有不必要的Google结果......)

所以这里有一些我到目前为止的问题:

  1. 如果我包括iostream图书馆,为什么namespace需要找到cout?是否有另一个cout可能导致名称冲突的地方?如果有人可以为此提供图表,那就太好了.

作为奖励,一些历史背景:

  1. iostream.h它改变之前到底是什么iostream

  2. 没有namespace起到这种变化的一部分?

c++ namespaces c++11

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

是否有可以绘制Prolog查询搜索树的程序?

我想知道是否存在可以绘制Prolog程序的逐步搜索树的工具?谢谢.

prolog swi-prolog search-tree

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

Java:如何限制方法对特定类的访问?

这是一个例子:

class A 
{
   List l = new List ();
   list.insert("x");
}

class List
{
   ...
   public void insert ()
   {
      /*insertion occurs*/
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)

是否有可能将insert()方法保持为public,但是只限制对A类的访问,以便只有从A调用时才能访问其他类?

java class

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

为什么`std::this_thread::sleep_for` 函数拒绝在 WSL Ubuntu 上休眠?

由于某些奇怪的原因std::this_thread::sleep_for,我在 WSL Ubuntu 上不起作用。它只是拒绝在指定的时间内睡觉。我想要第二个意见,以确定我是否做错了什么,或者我是否只是在 GNU C++std::实现中遇到了错误。

USER@ABC-WORKSTATION /tmp
$ cat sleep_test.cpp
#include <chrono>
#include <thread>
#include <iostream>

int main()
{
    auto start = std::chrono::system_clock::now();
    std::time_t start_time = std::chrono::system_clock::to_time_t(start);
    std::cout << "Start: " << std::ctime(&start_time) << std::endl;

    std::cout << "Sleep... " << std::endl;
    std::this_thread::sleep_for(std::chrono::milliseconds(10000));

    auto end = std::chrono::system_clock::now();
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);
    std::cout << "End: " << std::ctime(&end_time) << std::endl;
}
USER@ABC-WORKSTATION /tmp
$ g++ --version
g++ (Ubuntu 9.3.0-10ubuntu2) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc. …
Run Code Online (Sandbox Code Playgroud)

c++ ubuntu gnu

6
推荐指数
0
解决办法
147
查看次数

C++线程应用程序比非线程运行得慢

我目前正在用C++编写素数生成器.我先制作了一个单线程版本,后来又制作了一个多线程版本.

我发现如果我的程序生成的值小于100'000,则单线程版本比多线程版本更快.显然我做错了什么.

我的代码如下:

#include <iostream>
#include <fstream>
#include <set>
#include <string>
#include <thread>
#include <mutex>
#include <shared_mutex>

using namespace std;

set<unsigned long long> primeContainer;
shared_mutex m;

void checkPrime(const unsigned long long p)
{
    if (p % 3 == 0)
        return;

    bool isPrime = true;
    for (set<unsigned long long>::const_iterator it = primeContainer.cbegin(); it != primeContainer.cend(); ++it)
    {
        if (p % *it == 0)
        {
            isPrime = false;
            break;
        }
        if (*it * *it > p) // check only up …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading c++11

5
推荐指数
1
解决办法
449
查看次数

在不降低所述命令功能的情况下传递命令别名/功能的最佳方法是什么?

我有一个功能ll,目前扩展到这个:

function ll () 
{ 
    ls -lh --color "$@" | grep "^d";
    ls -lh --color "$@" | grep "^-" | grep -v "~";
    ls -lh --color "$@" | grep "^l"
}
Run Code Online (Sandbox Code Playgroud)

这样做是将列出的文件夹排序为首先显示目录,然后是文件,然后是链接.但是,我发现这种方法会降低ls命令的功能,例如,如果我尝试调用ll /bin /tmp,我将从两个文件夹中获取混合文件.

是否有一般的经验法则来传递命令别名/函数,以便不减少这些命令的完整功能?如果没有,我如何修复我的ll命令以便保留排序,但是完整的功能ls不会丢失?

请注意,我目前在我的系统(版本5.97)上有bash版本3.2.25(1) - release,因此--show-directories-first我无法使用标记.

编辑:

这是我最终使用的功能,我稍微修改了它,以便在ll没有任何args的情况下工作:

function ll () {
  if [ $# -eq 0 ]; then set -- .; fi
  for d; do
    ls -lh --color "$d"|awk '$1~/^d/{i=0} $1~/^l/{i=1} $1~/^-/{i=2} NF>2{print …
Run Code Online (Sandbox Code Playgroud)

unix linux bash

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

如何使用AWK从字符串中删除所有小写字符?

请注意,我在AWK中需要这个答案.

如何从某些awk变量中删除所有小写字符?我试过调用gsub:

gsub(/[a-z]+/,"",varName);

不幸的是,这删除了整个字符串,好像awk无法区分大小写的区别.我可以使用一些我不知道的正则表达式吗?

编辑:确认,awk没有看到小写和大写字符之间的区别.

示例1(这里将使用字母f来更好地理解结果):

varName="CHRFProtocol";
gsub(/[a-z]/,"f",varName);
Run Code Online (Sandbox Code Playgroud)

结果: ffffffffffff

示例2(同样,这里将使用字母f来更好地理解结果):

varName="CHRFProtocol";
gsub(/[A-Z]/,"f",varName);
Run Code Online (Sandbox Code Playgroud)

结果: ffffffffffff

这合法吗?在做什么?

regex linux awk

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

Shell hacking:从csh发起bash

我想在我的大学帐户中将bash设置为我的默认shell.

然而,传统的chsh方法在这里不起作用,因为大学的技术人员已经将其作为一个创业公司.但是,我可以通过bash从我的终端呼叫来调用bash .所以,我开发了一个小的hack,它允许我当前的shell csh通过修改我的~/.cshrc文件来自动启动bash,以便它从中调用bash.问题是,我希望以这样的方式设置它,当我退出我的bash会话时,我希望它也关闭它的父csh会话.我怎样才能做到这一点?

==编辑==

提醒:由于ajk警告过使用csh运行的脚本,我发现登录序列在该shell上精确完成的难点.我现在无法再登录我的机器了.我将不得不联系我的大学技术人员关于删除rc文件.我怀疑会让他们开心.:\

所以,请注意.

unix linux bash shell csh

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

标签 统计

linux ×5

unix ×4

bash ×3

c++ ×3

c++11 ×2

awk ×1

class ×1

csh ×1

gnu ×1

java ×1

multithreading ×1

namespaces ×1

prolog ×1

regex ×1

search-tree ×1

shell ×1

swi-prolog ×1

ubuntu ×1