小编tay*_*10r的帖子

无法写入命名管道

我正在尝试写一个用mkfifo制作的命名管道.但是当我运行命令(ex)时ls > myNamedPipe,我无法再将命令输入bash.我仍然可以写字符,这就是它.

linux bash named-pipes

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

了解产品样张,字段名称和中间检查对性能的影响

对于下面的代码,我观察到非常快速的结果,似乎是由三个不寻常的方面引起/影响:

  • 使用时(set-option :produce-proof true),最终的UNSAT非常快.如果没有此选项,最终的check-sat不会终止.
  • 当使用中间check-sat和断言(所有push/popped)时,最终check-sat的性能非常快.如果没有中间check-sat命令,最终的check-sat不会终止.
  • 重命名字段的数据类型进行最后检查-SAT的表现非常糟糕(终止需要30X更长的时间).

有人可以解释这些情况下的行为吗?只是选项的组合导致保留正确的事实来快速回答最终的SAT吗?未使用的构造函数的字段名称如何影响求解器的性能?

与此问题相关的代码如下.嵌入在代码中的是具有额外上下文和重复问题的注释.

;;;;;;;;;;;;;;;;;;;;;;;;;;;; Configuration ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; E-matching won't terminate on our queries, so turn it off
(set-option :smt.ematching false)
(set-option :smt.mbqi true)

;; In lieu of an initial test, produce-proofs true is a huge benefit to
;; the performance of the final check-sat
(set-option :produce-proofs true)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Raw data ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Our syntactic representation of 'Bits'
;; Removing 'Raw2345', or renaming it to 'Raw2', causes ~30x more computation time.
(declare-datatypes …
Run Code Online (Sandbox Code Playgroud)

z3

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

在客户端JS中解析二进制文件

我想知道是否有任何可能的方法来解析客户端 Javascript 中的二进制文件。我想编写一个页面,其中包含二进制文件的 HTML 输入表单(最终游戏是声音文件)和激活“解析”文件的 Javascript 函数的按钮。这可以通过客户端 Javascript 实现吗?

我知道我可以在服务器上使用 C 来完成此操作,但我想避免涉及服务器端的任何内容。这是因为我预计该任务是计算密集型的,并且我希望保持负载和服务器较低。

从我在 Google 上看到的情况来看,可以用 Javascript 解析二进制数据。我只是不确定如何在不先将文件传递到服务器的情况下将文件交给 Javascript 函数。

javascript file-io binaryfiles

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

正确关闭libUV句柄

我正在尝试找出如何修复这些内存泄漏,我在使用Valgrind运行此程序时得到的内存泄漏.泄漏发生在两个分配中nShell_client_main.但我不确定如何正确地释放它们.

我试过在nShell_Connect上释放它们,但它导致libUV中止程序.我已经尝试在结束时释放它们nShell_client_main,但是在关闭循环时我得到了读/写错误.有谁知道我应该如何关闭这些手柄?我读过这篇文章,这让我开始了.但是,由于uv_ip4_addr在最新版本中有不同的原型,因此接缝过时了.

(nShell_main是"入口"点)

#include "nPort.h"
#include "nShell-main.h"

void nShell_Close(
    uv_handle_t * term_handle
){
}

void nShell_Connect(uv_connect_t * term_handle, int status){
    uv_close((uv_handle_t *) term_handle, 0);
}

nError * nShell_client_main(nShell * n_shell, uv_loop_t * n_shell_loop){

    int uv_error = 0;

    nError * n_error = 0;

    uv_tcp_t * n_shell_socket = 0;
    uv_connect_t * n_shell_connect = 0;

    struct sockaddr_in dest_addr;

    n_shell_socket = malloc(sizeof(uv_tcp_t));

    if (!n_shell_socket){
        // handle error
    }

    uv_error = uv_tcp_init(n_shell_loop, n_shell_socket);

    if (uv_error){ …
Run Code Online (Sandbox Code Playgroud)

c libuv

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

优化单词解析器

语境:

我有一个代码/文本编辑器,而不是我想要优化.目前,该程序的瓶颈是语言解析器,而不是扫描所有关键字(有不止一个,但它们的编写方式基本相同).

在我的计算机上,编辑器会在1,000,000代码行周围延迟文件.在像Raspberry Pi这样的低端计算机上,延迟开始得更快(我不记得确切,但我想的10,000是代码行).虽然我从来没有看到比1,000,000代码行更大的文档,但我确信它们在那里,我希望我的程序能够编辑它们.

题:

这引出了一个问题:在大型动态字符串中扫描单词列表的最快方法是什么?

以下是可能影响算法设计的一些信息:

  1. 关键字
  2. 限定字符允许成为关键字的一部分(我称之为限定符)
  3. 大字符串

瓶颈的解决方案:

这(大致)是我目前用于解析字符串的方法:

// this is just an example, not an excerpt
// I haven't compiled this, I'm just writing it to
// illustrate how I'm currently parsing strings

struct tokens * scantokens (char * string, char ** tokens, int tcount){

    int result = 0;
    struct tokens * tks = tokens_init ();

    for (int i = 0; string[i]; i++){

        // qualifiers for C are: …
Run Code Online (Sandbox Code Playgroud)

c parsing string-parsing

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

浮点运算中的整数转换

我目前面临以下两难困境:

1.0f * INT32_MAX != INT32_MAX
Run Code Online (Sandbox Code Playgroud)

评估1.0f * INT32_MAX实际上给了我INT32_MIN

我并不完全对此感到惊讶,我知道整数转换的浮点并不总是准确的.

解决此问题的最佳方法是什么?

我正在编写的代码是缩放有理数的数组:from -1.0f <= x <= 1.0ftoINT32_MIN <= x <= INT32_MAX

这是代码的样子:

void convert(int32_t * dst, const float * src, size_t count){
    size_t i = 0;
    for (i = 0; i < count; i++){
        dst[i] = src[i] * INT32_MAX;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我最终得到的:

void convert(int32_t * dst, const float * src, size_t count){
    size_t i = 0;
    for (i = 0; i < count; i++){
        double …
Run Code Online (Sandbox Code Playgroud)

c c++

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

.focus() 不关注新元素

我有一个重命名某些 div 的功能。我试图让它工作的方式是这样的:

  • 用户右键单击 div
  • 用户单击上下文菜单上的“重命名”
  • div 获取输入元素并自动聚焦
  • 按 Enter 键或单击屏幕后提交输入

我已完成大部分步骤,但在单击“重命名”后输入元素并未聚焦。这是代码:

function Rename( ){
    ClickedFile.innerHTML = "<input class='Rename' type='text' value='" + ClickedFile.innerHTML + "'>";
    ClickedFile.childNodes[0].focus();
}
Run Code Online (Sandbox Code Playgroud)

ClickedFile 是右键单击的节点。更改innerHTML 工作正常,但 .focus() 不行,我不知道为什么。我在控制台上也没有收到任何错误。

我也尝试过使用:

ClickedFile.childNodes[0].select();
ClickedFile.childNodes[1].focus();
ClickedFile.focus();
Run Code Online (Sandbox Code Playgroud)

他们都没有工作。

编辑:

  • 我知道使用 JQuery 可能会有所帮助,但我更感兴趣的是找出为什么这不起作用。

  • 我解决了这个问题。它与事件处理程序有关。我的答案发布在下面。

html javascript

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

跨线程释放内存

跨线程释放内存是不好的做法?这样一个线程分配内存,并在退出后,将指针传递给主线程以释放内存.我觉得答案是肯定的,但我只是想知道.

我的代码中的目的是为了让主线程在释放之前可以对内存做一些其他的事情.在我的情况下,有很多变通办法,我使用它完全没问题.但是,在我的情况下,让一个线程返回void*到一块内存可以使代码非常方便.

编辑:我知道这样做没有技术故障.

c pthreads dynamic-memory-allocation

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

如何与另一个外部程序通信程序

我正在尝试写入stdin并从外部程序读取stdout(和stderr),而不更改代码.

我尝试过使用命名管道,但是直到程序终止并且stdin只对第一个输入起作用(然后cin为null)才会显示stdout.

我已经尝试使用/ proc/[pid]/fd,但只能从终端而不是程序进行写入和读取.

我已经尝试为此编写一个字符设备文件并且它可以工作,但一次只能有一个程序(这需要一次为多个程序工作).

在这一点上,据我所知,我可以编写驱动程序,在多个程序中复用io,但我认为这不是"正确"的解决方案.

这样做的主要目的是通过Web界面查看程序的订阅源.我确信必须要做到这一点.有什么我以前没有尝试过的吗?

c linux stdio

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