小编Naf*_*aly的帖子

检查传递给Bash脚本的参数数量

如果不满足所需的参数计数,我希望我的Bash脚本能够打印错误消息.

我尝试了以下代码:

#!/bin/bash
echo Script name: $0
echo $# arguments 
if [$# -ne 1]; 
    then echo "illegal number of parameters"
fi
Run Code Online (Sandbox Code Playgroud)

由于某些未知原因,我遇到以下错误:

test: line 4: [2: command not found
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

bash parameter-passing command-line-arguments

663
推荐指数
6
解决办法
71万
查看次数

回写与直写

我的理解是两种方法的主要区别在于,在"直写"方法中,数据立即通过高速缓存写入主存,而在"回写"数据则是在"后期"写入.

我们还需要在"后期"等待内存,那么"直写"的好处是什么?

caching cpu-architecture cpu-cache

77
推荐指数
4
解决办法
12万
查看次数

在subprocess.check_output()中抑制stderr

我试图找到一种方法来忽略stderr流(类似于2> /dev/null):

output = subprocess.check_output("netstat -nptl".split())
Run Code Online (Sandbox Code Playgroud)

我应该在上面的命令中添加什么来实现呢?

python subprocess python-2.7

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

Mac OS X上的剪贴板监控| Java的

我有麻烦的在Mac OS X系统剪贴板,我试图做的获取数据是倾听到系统剪贴板,并打印剪贴板中的内容每个新[基于文本的]信息被放入它的时间.

问题:下面的代码在Windows 7和openSUSE Linux机器上工作得非常好,但是当我尝试在Mac OS X上运行相同的代码时,程序无法打印剪贴板的新内容,直到关注应用程序.[在点击停靠栏上的应用程序图标之前,没有任何内容打印...]

我的源代码:

import java.awt.Toolkit;  
import java.awt.datatransfer.*;  
import java.io.IOException;  

public class ClipboardListener extends Thread implements ClipboardOwner {

    Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();  

    public void run(){  
        Transferable selection = systemClipboard.getContents(this);  
        gainOwnership(selection);  
    }  

    public void gainOwnership(Transferable t){ 
        try {this.sleep(100);} 
        catch (InterruptedException e) {e.printStackTrace();}
        systemClipboard.setContents(t, this);  
    }  

    public void lostOwnership(Clipboard clipboard, Transferable contents) {
        try {System.out.println((String) clipboard.getData(DataFlavor.stringFlavor));} 
        catch (UnsupportedFlavorException e) {} 
        catch (IOException e) {}
        gainOwnership(contents);  
    }  
}
Run Code Online (Sandbox Code Playgroud)
public class myApp {

    public static void main(String[] args){
        ClipboardListener …
Run Code Online (Sandbox Code Playgroud)

java macos clipboard multithreading awt

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

将malloc的结果转换为char(不是char*) - 为什么编译器没有抱怨?

tmpString = (char*)malloc((strlen(name) + 1) * sizeof(char));
tmpString = (char )malloc((strlen(name) + 1) * sizeof(char));
Run Code Online (Sandbox Code Playgroud)

这两行之间有什么区别?

我的理解是第二行是错误的,但由于某种原因,编译器什么也没说.

c casting

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

使用了错误类型的迭代器

我正在实施地图作为我的硬件分配的一部分.该映射应支持两种类型的迭代器:

  • 迭代器 - 允许更改地图.
  • constant_iterator - 不允许更改地图.

我有以下方法:

Map::const_iterator begin() const;
Map::const_iterator end() const;
Map::iterator begin();
Map::iterator end(); 
Run Code Online (Sandbox Code Playgroud)

但是,当我使用以下代码测试我的实现时:

for(Map<std::string,int>::const_iterator it = msi.begin(); it != msi.end(); ++it) {
    std::cout << *it << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我遇到以下问题:

map_test.cpp:49:43: error: no viable conversion from 'Map<basic_string<char>, int>::iterator' to 'Map<std::string, int>::const_iterator'
        for(Map<std::string,int>::const_iterator it = msi.begin(); it != msi.end(); ++it) {
                                                 ^    ~~~~~~~~~~~
./map_new.h:57:3: note: candidate constructor not viable: no known conversion from 'Map<basic_string<char>, int>::iterator' to 'const
      Map<basic_string<char>, int>::const_iterator &' for 1st argument
                const_iterator(const Map<KeyType, DataType>::const_iterator& …
Run Code Online (Sandbox Code Playgroud)

c++

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

Bash shell 中的错误分隔符

我正在尝试迭代几行 bash 脚本并回显所有非注释行。

在我的循环中,我有以下命令:

echo $line | cut -d" #" -f1
Run Code Online (Sandbox Code Playgroud)

但是,解释器向我抛出以下错误:

cut: bad delimiter
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

bash

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

unlink()后从FIFO读取

我创建了一个FIFO,写入它并取消链接.令我惊讶的是,我能够在取消链接后从fifo读取数据,为什么会这样?

#include <fcntl.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

#define MAX_BUF 256
int main()
{
    int fd;
    char * myfifo = "/tmp/myfifo";

    /* create the FIFO (named pipe) */
    mkfifo(myfifo, 0666);

    int pid = fork();
    if (pid != 0)
    {
        /* write "Hi" to the FIFO */
        fd = open(myfifo, O_WRONLY);
        write(fd, "Hi", sizeof("Hi"));
        close(fd);

        /* remove the FIFO */
        unlink(myfifo);
    }
    else 
    {
        wait(NULL);
        char buf[MAX_BUF];

        /* open, read, and display the message from the …
Run Code Online (Sandbox Code Playgroud)

c ipc fifo

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

在不阻塞的情况下“通知”处理器的正确方法是什么?

假设我有很多东西,我必须对所有这些东西做一些操作。如果一个元素的操作失败,我想停止所有阵列的工作[这项工作分布在多个处理器上]。

我想实现这一点,同时将发送/接收的消息数量保持在最低限度。另外,如果没有必要,我不想阻塞处理器。

我怎样才能使用 MPI 做到这一点?

mpi

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

在最小堆中查找k个最小元素

假设我有一个大小为n的最小堆.我想找到最小的k元素而不改变原始的min-heap.运行时应该是theta(k ^ 2).我可以使用记忆theta(k).

我该怎么做?

algorithm

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