小编Lij*_*hew的帖子

为什么我的Java程序不能读取Perl的STDERR?

我们有一个Perl程序来验证从Java程序调用的XML.它无法写入标准错误并挂在打印位置.

Perl正在写入STDERR,java程序正在使用getErrorStream()函数读取STDERR.但是Perl程序暂时写入STDERR.我怀疑Java函数完全阻塞了STDERR流,Perl正在等待这个流被释放.

在Perl中是否有办法克服这种阻塞并强行写入标准错误?由于Java只进行读取,因此API不应该按照java doc锁定STDERR流.

Perl Code代码段是:

sub print_error
{
    print STDERR shift;
}
Run Code Online (Sandbox Code Playgroud)

Java代码段是:

while ( getErrorStream() != null )
{
    SOP errorMessage;
}
Run Code Online (Sandbox Code Playgroud)

提前感谢您的帮助.

谢谢,Mathew Liju

java perl stderr

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

我如何将“cout”、“cerr”、“stdout”和“stderr”从 C++ 程序定向到单个文件

我们有一个 C++ Web 服务,它会根据每个请求生成子进程。因此,每个孩子都会创建自己的日志文件。我们将 cout 和 cerr 流绑定到一个文件以捕获所有“std::cout”和“std::cerr”。

但是,该服务使用另一个“C”组件来执行一些旧操作。C组件使用“fprintf(stdout,xxx)”和“fprintf(stderr,xxx)”来打印日志。

这些消息不会打印到“cout”和“cerr”日志文件中。相反,它会打印在提示中。我们需要这些 stdout/stderr 消息也转到相应的子日志文件。

有没有一种方法可以将“stdout”和“stderr”也绑定到绑定“cout”和“cerr”的同一文件。

有类似的问题,但没有多语言代码混合示例。

让我知道。

谢谢

c++ cout stdout stderr

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

是否必须存在用于创建包的文件夹名称的文件夹?

我们正在考虑Perl项目中的公共代码.一个主程序应分成几个可重用的模块.

我们的程序名称validate_results.pl包含一组验证命令.我们计划将其拆分为小模块,因此validate_results.pl应该像:

use Common::Validate_Results;
use Common::Validate_Results::CommonCommands;
use Common::Validate_Results::ReturnCodeValidation;
...
Run Code Online (Sandbox Code Playgroud)

根据我的理解,我应该创建一个Common文件夹,并且Validate_Results.pm应该存在.再次下Common,Validate_Results应该创建文件夹,并在其下面CommonCommands,ReturnCodeValidation文件夹应该存在.

是否必须存在所有这些文件夹,或者我们是否可以将所有Perl程序放在一个文件夹中并对它们进行逻辑分组,并仍然使用上述方法来访问模块(比如common::validate_results像这样使用).

perl package

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

在Perl中命令执行失败时如何读取stderr?

我正在执行一个diff命令perl.

my @lines = `/usr/local/bin/diff -udr \"$expected_file\" \"$gen_file\"`;

if ($? != 0)
{
    print ERRFILE "Diff between $expected_file and $gen_file failed\n";
    return $diff_err;
}
Run Code Online (Sandbox Code Playgroud)

diff由于某种原因,这里可能失败了.例如:stderr显示/ usr/local/bin/diff:test.txt:没有这样的文件或目录.我想在程序中阅读此消息.如何找到diff命令的stderr消息(或者grep我执行的任何命令)?

提前感谢您的帮助.

谢谢,Mathew Liju

perl external-process

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

显式调用基类构造函数的重要性是什么?

class A {
    A() { }
};

class B : public A {
    B() : A() { }
};
Run Code Online (Sandbox Code Playgroud)

为什么我们需要在构造函数中显式调用基类的构造B函数?不隐含吗?

c++

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

Informix"load"命令在Python pyodbc中不起作用

我们正在编写一个实用程序来将数据加载到Informix DB中.

我们的实用程序是用Python编写的,我们使用pyodbc包来连接和执行SQL.

select和insert查询工作正常.

但是,sql

"从input_file分隔符加载'|' 插入表"

失败,出现以下错误.

pyodbc.ProgrammingError: ('42000', '[42000] [Informix][Informix ODBC Driver][Informix]A syntax error has occurred. (-201) (SQLExecDirectW)') 
Run Code Online (Sandbox Code Playgroud)

pyodbc是否不支持Informix中的"load"命令?

提前感谢您的帮助.

谢谢,

python informix pyodbc

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

在C中的struct中"解除引用`void*'指针"警告的解决方案?

我试图创建一个伪超级结构来打印结构数组.我的基本结构如下.

/* Type 10 Count */
typedef struct _T10CNT
{
    int _cnt[20];
} T10CNT;

...

/* Type 20 Count */
typedef struct _T20CNT
{
    long _cnt[20];
} T20CNT;
...
Run Code Online (Sandbox Code Playgroud)

我创建了下面的结构来打印上面提到的结构数组.编译下面的代码片段时,我解除了引用void指针错误.

typedef struct _CMNCNT
{
    long  _cnt[3];
} CMNCNT;

static int printCommonStatistics(void *cmncntin, int cmncnt_nelem, int cmncnt_elmsize)
{
    int ii;
    for(ii=0; ii<cmncnt_nelem; ii++)
    {
        CMNCNT *cmncnt = (CMNCNT *)&cmncntin[ii*cmncnt_elmsize];
        fprintf(stout,"STATISTICS_INP: %d\n",cmncnt->_cnt[0]);
        fprintf(stout,"STATISTICS_OUT: %d\n",cmncnt->_cnt[1]); 
        fprintf(stout,"STATISTICS_ERR: %d\n",cmncnt->_cnt[2]);
    }
    return SUCCESS;
}

T10CNT struct_array[10];
...
printCommonStatistics(struct_array, NELEM(struct_array), sizeof(struct_array[0]);
...
Run Code Online (Sandbox Code Playgroud)

我的目的是有一个共同的功能来打印所有数组.请让我知道使用它的正确方法.

提前感谢您的帮助.

编辑:参数名称从cmncnt更改为cmncntin.对不起,这是错误的错误.

谢谢,Mathew Liju

c struct void-pointers

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

使用Filezilla进行FTP时,俄语字符变为垃圾

当我尝试FTP俄语命名文件时,它在Linux机器中显示为"垃圾"字符.但是当我复制俄罗斯名字时,它正确显示出来.

在FTP期间是否需要在Filezilla中进行任何设置或任何操作.我试过Ascii和Binary模式.

Linux机器的语言环境设置为ru_RU.cp1251.

ftp encoding filezilla

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

如果提供2"@",则验证电子邮件的正则表达式失败

我们已经遵循正则表达式来验证RFC 2822标准.

功能如下:

int isValidEmail(const char *email_id)
{
    /* Regular expression to validate email */
    const char *reg_exp =
        "[a-z0-9!#$%&'*+-/=?^_`{|}~]+(\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?$";

    regex_t preg;

    /* Compile the regular expression */
    if (regcomp(&preg, reg_exp, REG_EXTENDED|REG_NOSUB|REG_ICASE) != 0)
        return FAILURE;

    /* Execute the regex, 0 for success */
    if (regexec(&preg, email_id, (size_t)0, NULL, 0) != 0)
        return FAILURE;

    regfree(&preg);

    return SUCCESS;

} 
Run Code Online (Sandbox Code Playgroud)

但如果我提供"test @ test @ test.com"等电子邮件,电子邮件将被接受.

这个正则表达式有什么问题吗?

提前感谢您的帮助.

谢谢,Mathew Liju

c regex

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

Adler32滚动校验和的计算差异-python

在计算运行的校验和时需要澄清。

假设我有这样的数据。

data = 'helloworld'
Run Code Online (Sandbox Code Playgroud)

假设块大小为5,我需要计算运行校验和。

>>> zlib.adler32('hello')
103547413
>>> zlib.adler32('ellow')
105316900
Run Code Online (Sandbox Code Playgroud)

根据Python文档(Python版本2.7.2)

zlib.adler32(data[, value])
Run Code Online (Sandbox Code Playgroud)

“计算数据的Adler-32校验和。(Adler-32校验和几乎与CRC32一样可靠,但是可以更快地计算出来。)如果存在value,则将其用作校验和的起始值;否则,使用固定的默认值。这允许在多个输入的串联上计算运行中的校验和。”

但是当我提供这样的东西时,

>>> zlib.adler32('ellow', zlib.adler32('hello'))
383190072
Run Code Online (Sandbox Code Playgroud)

输出完全不同。

我尝试创建一个自定义函数以生成rsync算法中定义的滚动校验和。

def weakchecksum(data):
    a = 1
    b = 0

    for char in data:
        a += (ord(char)) % MOD_VALUE
        b += a % MOD_VALUE



    return (b << 16) | a



def rolling(checksum, removed, added, block_size):
    a = checksum
    b = (a >> 16) & 0xffff
    a &= 0xffff

    a = (a - ord(removed) + ord(added)) % MOD_VALUE
    b = …
Run Code Online (Sandbox Code Playgroud)

python adler32

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