小编Ioa*_*nna的帖子

DBusWatch和DBusTimeout示例

我需要在C中编写一个应用程序,用于在dbus消息队列上异步发送和读取消息.我已经读过这样做,我应该使用连接提供的DBusWatchDBusTimeout对象,但我找不到如何在任何地方使用这些的例子......

目前我使用的dbus_connection_read_write_dispatch是为了做到这一点,但我已经读过它不建议用于异步操作,因此我将不得不切换到创建自己的main loop并使用它...

我的问题最接近的答案是这一个:

http://lists.freedesktop.org/archives/dbus/2007-September/008555.html ,

建议查看我所做的dbus-gmain.c文件,但是我发现在那里调用了dbus_connection_set_watch_functionsdbus_connection_set_timeout_functions其他函数作为参数 - 我应该覆盖这些函数吗?我应该按原样使用它们吗?

我根本无法弄清楚如何使用这些来读取和写入dbus消息队列...

任何想法都会受到欢迎......

c dbus

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

open() 在尝试打开管道进行读取时阻塞

我有两个进程,一个服务器和一个客户端,应该通过管道(C++、Linux)进行通信。服务器用O_RDONLY标志打开管道,客户端用O_WRONLY. 然而,服务器在open函数处阻塞,而客户端似乎运行成功(open函数返回成功,函数也是如此write)。

我已经读过,如果O_NONBLOCK设置了标志,读取功能将继续,但如果没有连接客户端,我不希望它继续 -在连接客户端之前可以阻止它,但在我的情况下它仍然被阻止客户端运行完毕后...

你能告诉我我做错了什么吗......?

这是代码:

// Server side
int pipe;
int status, nr_read = 0;

status = mkfifo(FIFO_NAME, 0666);
if (status < 0)
{
    // If the file already exists, delete it
    unlink(FIFO_NAME);

    // Try again
    status = mkfifo(FIFO_NAME, 0666);

    if(status < 0)
    {
        printf("mkfifo error: %d\n", status);
        return status;
    }
}

pipe = open(FIFO_NAME, O_RDONLY);
printf("Never gets here...\n");
[...]
nr_read = read(pipe, my_char_array, CHAR_ARRAY_SIZE); …
Run Code Online (Sandbox Code Playgroud)

c++ linux pipe

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

如何保护传输中的AWS S3上传/下载的数据?

当我们将数据上传到 S3 时,默认情况下它在传输过程中是否受到保护(可能通过 HTTPS)?

我发现这篇文章,如果我理解正确的话,指出 S3 不使用 HTTPS:

Amazon Simple Storage Service:您仍然可以将 HTTP 与 Amazon S3 结合使用并安全地发出经过身份验证的请求。该服务使用不同的安全签名协议。

在这种情况下,我们是否应该使用客户端加密来保护传输中的数据?

encryption amazon-s3 amazon-web-services

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

Visual Studio 2017中的Emacs键绑定

我试图让VS 2017的Emacs风格的键绑定
Q&至于涉及到以前 - VS - 版本,我想:

  • VS设置(工具 - >选项 - >环境 - >键盘),但没有Emacs选项:显然它是从VS 2010开始删除的;
  • XKeymacs(虽然它看起来很古老,谁知道?),但它只支持Vista版本的Windows版本,而且我在Windows 8上运行;
  • VisEmacs,但它支持VS版本2008;
  • 下载了VS 2010扩展,从存档中提取,修改后的版本(请参阅下面的说明,了解我如何检索它),重新存档并使用VSIXInstaller运行它,如本答案中所述.

    但是,在我在VS键盘映射中选择了Emacs选项后,经过多次重新启动后,不仅Emacs键绑定无法正常工作,而且以​​前的kbd映射也被禁用,即使是像Ctrl +箭头这样的常见映射也是如此.我查了一下,命令在那里,他们只是不工作.

所以这就是我被卡住的地方.


NB为了找到VS版本:

C:\Program Files (x86)\Microsoft Visual Studio\Installer>vswhere.exe
Visual Studio Locator version 1.0.62 [query version 1.10.80.60812] Copyright (C) Microsoft Corporation. All rights reserved. installationName: VisualStudio/15.2.0+26430.16 installationPath: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community installationVersion: 15.0.26430.16

试过15.215.(和171615.3,在此之前,:))


PS似乎这个问题是针对每个VS版本提出的......这可能是对VS团队的暗示:).

visual-studio-2017

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

大整数上的Clojure Math/sqrt精度

为什么以下Clojure代码打印为"true"?

(请注意,最后一位数字不同)

(== (Math/sqrt 10252519345963644753026N)
    (Math/sqrt 10252519345963644753025N))
Run Code Online (Sandbox Code Playgroud)

不确定这个问题是关于Clojure还是它也适用于其他语言(Java的BigInteger?).

打印它们会导致:

(str (Math/sqrt 10252519345963644753026N) " "
     (Math/sqrt 10252519345963644753025N))

1.01254725055E11 1.01254725055E11
Run Code Online (Sandbox Code Playgroud)

java math clojure sqrt

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

Scala替代无限循环

在Scala中是否有更多功能替代无限循环?

while(true) {
  if (condition) {
    // Do something
  } else {
    Thread.sleep(interval);
  }
}
Run Code Online (Sandbox Code Playgroud)

scala

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