小编bit*_*ask的帖子

终端上不打印单个字符

我有3个不同的进程,所有进程都打印出单个字符使用printf.但我在终端看不到它们.当我添加换行符时,printf("\n H")每个字符都在一个新行上,我可以看到它们.如果没有换行符,为什么它不起作用?

c printf

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

如何修剪UNIX who命令的输出?

我正在使用unix who命令处理一个想法.众所周知,似乎没有直接开关只提供用户名和行(终端)信息而没有日期和屏幕信息...例如:输出是mneedham tty7...2012-02-19 11:26 (:0)

我想要得到的只是那mneedham tty7部分.无论用户名和终端信息有多长,解决方案都需要工作.

我尝试使用tr -s ' '(一个空间)who | tr -s ' ',这给了我一切之间的空间.不是我想要的.Tried cut -d" " -f1只获取用户名.所以我希望有人可以帮我找到正确的命令来获取两点信息.

谢谢.

bash gnu-coreutils

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

单线程C++函数调用中的undebuggable非确定性heisenbug

我在这里结束了:我有一个单线程的C++程序.这里有一些经验数据和背景信息,我试图突出最重要的关键词;

  • 我正在谈论的整个部分没有任何系统调用,除了标准C++库可能执行的内存(de-)分配调用(std::set涉及到).这是一个纯粹的逻辑算法.
  • 这种行为应该是确定性的,取决于输入,我不会改变.
  • 如果错误表现出来,那么程序就会陷入无限循环,它似乎开始分配超出任何界限的内存.
  • 该bug并没有表现出来预见的,我可以在命令行中运行的程序,有时(可能是30%-50%)的错误表现,否则,一切顺利,运行正常,据我可以告诉.
  • 一旦我不直接从提示符运行程序,但在gdb或valgrind中,错误消失了,程序永远不会死.
  • 现在是最好的部分:我将问题追溯到(模板化的)非虚拟成员函数调用.就在呼叫之前,我打印一个消息std::cout,这我可以看到在终端.所述第一线在函数内部也有一个调试消息,这是从未示出.

我再也看不到任何合理的解释了.也许你可以想出如何继续下去.


编辑:重要的代码行,我更改了行号,以便我们可以参考它们并省略不相关的部分,所以并非所有内容似乎都是最有意义的.

a.cpp

 10     std::set<Array const*>* symbols;
 11     std::set<Array const*> allSymbols;
 12     symbols = &allSymbols;
 //  ... allSymbols are populated with std::inserter
 15     std::cout << "eval; cd = " << &cd << ", cg = " << &cd.cg << std::endl;
 16 …
Run Code Online (Sandbox Code Playgroud)

c++ debugging object-lifetime non-deterministic heap-corruption

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

c ++ operator()行为

考虑一下,我使用std :: for_each和带有重载operator()的对象来累积一些有关向量内容的数据:

#include <iostream>
#include <vector>
#include <algorithm>

struct A{
    int a;
    A(): a(0){}

    void operator()(int i) {
        if(i)   a++;
        std::cout << "a:" << a << std::endl;
    }
};

int main(int argc, char *argv[]) {
    //test data
    std::vector<int> vec;
    vec.push_back(1);
    vec.push_back(1);
    vec.push_back(0);

    //accumulator
    A accum;

    std::for_each(vec.begin(), vec.end(), accum);
    std::cout << "non-zero elements:" << accum.a << std::endl;

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

输出:

a:1
a:2
a:2
non-zero elements:0
Run Code Online (Sandbox Code Playgroud)

为什么是non-zero elements0?

c++ c++-standard-library

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

可以暂停svg动画而不会丢失累积信息吗?

您可以无限制地停止和重复动画,但如果重新启动无限动画,它将失去其累积值并从初始值开始.

也许我应该用一个例子来澄清; 拍这个动画:

  <animate id="main"
    attributeName="transform" attributeType="XML"
    begin="startbox.click" dur="1s" end="endbox.click"
    from="rotate(0)" to="rotate(360)"
    additive="sum"
    accumulate="sum"
    fill="freeze"
    repeatCount="indefinite"
  />
Run Code Online (Sandbox Code Playgroud)

如果我停止这个动画,并启动另一个(比如说id="second")影响同一个物体的旋转,那么second它将完全从main左边的点继续.但是如果我通过单击startbox(或通过任何其他事件)来启动这个,它将减去所有差异main并在开始之前重置旋转.

我想要的是一个正确的"暂停",我可以继续以前动画停止的地方.当然,我可以添加固定数量的相同动画和相同数量的相同开始/停止按钮来模拟效果,但这不是一个好的解决方案.特别是因为暂停次数有限.


整个例子(似乎只在Opera中工作)

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
     xmlns="http://www.w3.org/2000/svg" version="1.1"
     xmlns:xlink="http://www.w3.org/1999/xlink">
  <desc>Click example</desc>
  <g>
    <rect id="startbox"
      x="10" y="10"
      width="20" height="20"
      stroke="none" fill="green"
    />
    <rect id="endbox"
      x="10" y="40"
      width="20" height="20"
      stroke="none" fill="red"
    />
    <g transform="translate(200,200)">
    <rect
      x="0" y="0"
      width="50" height="5"
      stroke="#10e9f3" fill="#30ffd0"
    >
      <animate
        attributeName="transform" attributeType="XML"
        begin="startbox.click" dur="1s" …
Run Code Online (Sandbox Code Playgroud)

svg svg-animate

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

如何修复尽管传递正确的标志而发生的"未定义的引用"链接器错误?

我正在尝试编译这个名为Pirni的C程序,它最初是为iPhone制作的,我想在Linux Ubuntu 12.04 LTS上运行它.它很短,(3个C文件和1个头文件).但我得到以下错误.我确实libpcap-dev安装了,但我确实包含了-lpcap所以我不知道可能出现什么问题.

gcc -Wall -pthread -lpcap pirni.c threads.c sniffer.c -o pirni -lnet
pirni.c: In function ‘set_forwarding’:
pirni.c:31:2: warning: implicit declaration of function ‘sysctlbyname’ [-Wimplicit-function-declaration]
/tmp/cc3sf284.o: In function `set_forwarding':
pirni.c:(.text+0xfd): undefined reference to `sysctlbyname'
/tmp/ccvGjyMo.o: In function `processPacket':
sniffer.c:(.text+0x1b): undefined reference to `pcap_dump'
/tmp/ccvGjyMo.o: In function `initSniffer':
sniffer.c:(.text+0xfa): undefined reference to `pcap_open_live'
sniffer.c:(.text+0x15a): undefined reference to `pcap_lookupnet'
sniffer.c:(.text+0x1af): undefined reference to `pcap_compile'
sniffer.c:(.text+0x1dd): undefined reference to `pcap_setfilter'
sniffer.c:(.text+0x222): undefined reference to `pcap_dump_open'
sniffer.c:(.text+0x27c): …
Run Code Online (Sandbox Code Playgroud)

c ubuntu linker-errors pcap

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

增加matplotlib图例中符号的大小?

我用这样的标记画图:

plt.scatter(xs1, ys1, s=12, linewidths=0, marker='o', label='hello')
plt.scatter(xs2, ys2, s=12, linewidths=0, marker='x', label='hello')
Run Code Online (Sandbox Code Playgroud)

这样可以在图形中生成正确的大小,但符号在图例中几乎难以理解。如何增加图例中符号的大小?

matplotlib legend

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

具体来说,修改 const 对象是未定义行为的标准状态在哪里?

众所周知,以下示例表现出未定义的行为:

T const x = T();
T& r = any_suitable_conversion_to_Tref(x); // fine
r = T(); // UB
Run Code Online (Sandbox Code Playgroud)

const_castcppreference确认:

const_cast 可以形成一个指向实际引用 const 对象的非常量类型的引用或指针,或者形成一个指向实际引用 volatile 对象的非 volatile 类型的引用或指针。通过非常量访问路径修改常量对象并通过非易失性泛左值引用易失性对象会导致未定义的行为。

但是,它没有说明例如 c 样式转换,也没有引用标准(cppreference 通常从不引用)。

C++ 标准究竟在哪里禁止这种行为?

c++ constants object language-lawyer

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

使用fread/fwrite在C中读取和写入文件的结构

我有以下结构:

typedef struct {
  char last[NAMESIZE];
  char first[NAMESIZE];
} name;

typedef struct {
  int id;
  name name;
  float score;
} record;

typedef struct {
  record *data;
  size_t nalloc;
  size_t nused;
} record_list;
Run Code Online (Sandbox Code Playgroud)

我试图使用此函数从文件中读取记录:

int file_read(record_list *list, record* rec)
{
  /* irrelevant code eliminated */

  while(fread(&records, sizeof(record), 1, fp))
  {
    *rec = records;
    valid_list_insert = list_insert(list, rec);
    if(!valid_list_insert)
    {
      return 0;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用此函数将record_list写入文件:

int file_write(record_list* list)
{
  /* irrelevant code eliminated */

  if(fwrite(&list, sizeof(record_list), 1, fp) == 0)
  { …
Run Code Online (Sandbox Code Playgroud)

c struct structure fwrite fread

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

shell脚本和正则表达式

#!bin/bash
echo enter your password :
read password

passlength=$(echo ${#password})

if [ $passlength -le 8 ];
then
    echo you entered correct  password
else
    echo entered password is incorrect
fi

if [[$password == [a-z]*[0-9][a-z]*]];
then
    echo match found
else
    echo match not found
fi
Run Code Online (Sandbox Code Playgroud)

我没有弄清楚这段代码有什么问题.如果我输入任何字符串作为密码,让我们说hello123,它给了我一个错误:

hello123:找不到命令

我的脚本出了什么问题?

regex bash shell

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