簡體   English   中英

Perl和外部程序

[英]Perl and external programs

我有一個Perl程序和一個C程序。 我想運行Perl程序並捕獲C程序的返回值。 明確說明:

C程序(a.out)

int main()
{
    printf("100");
    return 100;
}

Perl程序:

print `ls`; #OK
print `a.out`; #No error but it does not print any output.

有任何想法嗎? 謝謝。

我不知道perl,但這在我的系統上有效,因此不能保證:

#!/usr/bin/perl

print "Running a.out now\n";
$exitCode = system("./a.out");
print "a.out returned:\n";
print $exitCode>>8; print "\n";

由於一個原因或另一個system()返回由bithfted 8組成的返回值(因此0將變成256,1將成為512 ... 7將成為1792或類似的東西),但是我不在乎查找原因。

您的C程序沒有打印回車符,因此您可能會看到行緩沖問題。

嘗試以下方法:

printf("100\n");

system()將返回一個代碼,該代碼指示您的C程序返回了什么或者它是否已被信號終止; 假設情況並非如此,您可以

$exitcode = system('a.out');
print "return code was ", $exitcode >> 8, "\n";

如果還希望捕獲輸出,則可以使用反引號,並且代碼將在$?中。 變量。

$output = `a.out`;
$exitcode = $?;
print "return code was ", $exitcode >> 8, "\n";
print "output was:\n", $output;

您可能想使用像IPC :: Cmd這樣的模塊,該模塊具有您可能需要的其他一些功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM