小编Vic*_*don的帖子

C中"=="运算符的返回值

我可以假设在C中,如果两个值相等或者它可以评估为其他"真实"值,"=="运算符将始终求值为1吗?

struct ss {
    int id;
};

struct os {
    int sid;
    int state;
};

int count(struct ss *s, int state)
{
    int num = 0;
    // foreach o (of type os*) in a hash table
        num += o->state == state && (s ? o->sid == s->id : 1);

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

那么o->sid == s->id总是返回1或0,还是可以返回其他值?

c

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

未收到Amazon SES退回通知

我在我的服务器上配置了postfix,只将@ gmail.com邮件发送到Amazon SES:

gmail.com          smtp:email-smtp.eu-west-1.amazonaws.com:25
*                  :
Run Code Online (Sandbox Code Playgroud)

此外,我在Amazon SES控制台中配置了使用Amazon SNS接收邮件上的Bounces和Complains.问题是,如果我发送邮件到不存在的Gmail地址,我不会收到退回.

如果从mail.google.com发送邮件到地址dsadaerwer.lala-band-sucks.justin-is-a-beaver@gmail.com,我会收到:

Delivery to the following recipient failed permanently:
 dsadaerwer.lala-band-sucks.justin-is-a-beaver@gmail.com
Run Code Online (Sandbox Code Playgroud)

但是如果从PHP脚本发送到同一个地址,postfix说:

E4E1A9F9CE: to=<dsadaerwer.lala-band-sucks.justin-is-a-beaver@gmail.com>, relay=email-smtp.eu-west-1.amazonaws.com[54.72.42.170]:25, delay=21, delays=0.02/0.04/11/10, dsn=2.0.0, status=sent (250 Ok 00000146d86bcc13-9fa1ac16-b1cd-476e-8398-31f406d47961-000000)
Run Code Online (Sandbox Code Playgroud)

因此,亚马逊SES接受邮件,但我没有收到有关失败的通知.有什么不对?

注意.发送到有效的电子邮件时,一切都按预期工作.

此外,当从AWS SES控制台向bounce@simulator.amazonses.com发送测试邮件时,我会立即通过电子邮件通知我,但是通过email-smtp.eu-west-1.amazonaws从PHP脚本发送到同一封电子邮件. com不会导致电子邮件通知.

ubuntu-server amazon-web-services amazon-sns amazon-ses

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

错误:在Openshift应用程序上收听EACCES

我有以下代码

var express  = require('express')
    , app    = express()
    , server = require('http').createServer(app)
    , io     = require('socket.io').listen(server)
    , connect = require('connect')
    , pg     = require('pg')
    , Client = pg.Client;

// Setup express middleware
app.use(express.static('public'));
app.use(connect.logger());

// Start the server
var port = process.env.OPENSHIFT_INTERNAL_PORT || 8080
    , ip = process.env.OPENSHIFT_INTERNAL_IP || "127.0.0.1";
server.listen(port, ip);
Run Code Online (Sandbox Code Playgroud)

但是,当应用程序自动启动或我用节点手动启动时,我总是收到错误:"警告:错误引发:错误:收听EACCES"

package.json的内容:

{
    "name"        : "test-app",
    "version"     : "0.0.1-1-alpha",
    "description" : "test-app",
    "dependencies": {
        "express"   : "3.1.x",
        "connect"   : "*",
        "socket.io" : "0.9.x",
        "i18next"   : "1.6.x",
        "bower" …
Run Code Online (Sandbox Code Playgroud)

node.js express openshift

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

使用gdb调试正在运行的守护程序

我正在开发一个作为守护进程运行的高流量网络C服务器应用程序.在某些情况下,应用程序崩溃(总是没有核心).我如何使用gdb调试正在运行的守护进程来查找生成SIGSEGV的位置?

解释性说明:

  1. 我知道如何使用attach命令将gdb附加到正在运行的进程

  2. 附加到过程后,它会停止.如果我运行然后"继续",如果程序没有崩溃,gdb仍然被阻止.如果我按CTRL-C,进程正在退出,我无法简单地分离gdb.

所以问题是:有没有办法在没有gdb被卡住的情况下继续这个过程但是如果进程没有崩溃就可以分离?

c linux gdb daemon

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

如何从守护程序在 KDE 中发送桌面通知

我有一个守护进程 ( netplugd),当我的电缆插入或拔出时,它可以执行一些操作。这些操作可以通过脚本定义bash。如何将通知(作为其他用户)发送到我的桌面(使用bash)以告知我有关电缆状态的信息。

我已经尝试过以下方法:

notify-sendknotify --passivepopup守护进程显示$DISPLAY尚未设置。

linux notifications kde4

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

使用fifo以非阻塞模式打开并选择

我有两个进程A和B.通信流总是A - > B,但我需要使用命名管道来完成它,因为我必须在B进程内的select调用中使用管道文件描述符,并写入数据当任何一个或两个进程退出时,管道必须保持不变.

管道两端以非阻塞模式打开.在过程A:

int push_fifo_fd = open(FIFO_NAME, O_WRONLY | O_NONBLOCK | O_CREAT, 0644);
Run Code Online (Sandbox Code Playgroud)

在流程B中:

int fd = open(FIFO_NAME, O_RDONLY | O_NONBLOCK | O_CREAT, 0644);
Run Code Online (Sandbox Code Playgroud)

Q1.进程B使用curl多接口,因此我得到curl多句柄的fd_sets并将"fd"描述符添加到读取fd_set,而不是调用select,以获得可用于读取和写入的文件描述符.在每次调用调用中,"fd"包含在结果读取fd_set中,但是读取返回0,即使写入结束也是如此.这导致进程B使用100%的处理器时间.我提到我不知道订购哪个管子的末端是打开的.B的相关代码:

while (1)
{
    fd_set read_fds, write_fds, err_fds;

    FD_ZERO(&read_fds);
    FD_ZERO(&write_fds);
    FD_ZERO(&err_fds);

    FD_SET(fifo_fd, &read_fds);
    // some code
    ccode = curl_multi_fdset(curlm, &read_fds, &write_fds, &err_fds, &max_fd);
    max_fd = MAX(max_fd, fifo_fd);

    rc = select(max_fd + 1, &read_fds, &write_fds, &err_fds, &timeout);
    switch (rc)
    {
        case -1:
            WARN("select");
            continue;

        case 0:
        default:
            {
                if (FD_ISSET(fifo_fd, &read_fds))
                {
                    // read from …
Run Code Online (Sandbox Code Playgroud)

c linux curl fifo

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

为什么这个OpenMP并行操作不能尽可能快?

我有一个必须使用OpenMP库实现的C程序.其结构是:

for (t = 0; t < IT; ++t) {
#pragma omp parallel for private(i, j, k, l) schedule(dynamic)
    for (i = 0; i < n; ++i) {
        for (j = 0; j < n; ++j) {
                for (k = 0; k < n; ++k) {
                    for (l = 0; l < n; ++l) {
                        // calculations 0
                    }
                }

        // calculations 1
        }
    }

#pragma omp parallel for private(i, j) schedule(dynamic)
    for (i = 0; i < n; ++i) …
Run Code Online (Sandbox Code Playgroud)

c parallel-processing openmp

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