假设我有一个perl程序,例如:

my $c = "MyDataToCProg";
open my $h, '-|', 'myCProg', "$c";
my @result = <$h>;
close $h;
print "Result: " . $result[0] . "\n";

现在,myCProg是一个用gcc编译的程序。C程序的输出将是printf语句,它最终会出现在perl程序的$result[0]变量中。
有没有比用printf打印更好的方法从C程序中提取输出?例如,任何人都可以从命令行运行“myCProg”,也可以看到输出。我希望只有在perl程序中才能看到输出,如果有人在命令行运行该程序,则无法看到输出。
有人知道怎么做吗?
抱歉,我手头没有C程序,但是任何带有printf语句(甚至是一个简单的Hello World)并带有参数(可能会打印“Hello[yourname])的程序都适用于本例。

最佳答案

你可以加密通讯。你可以通过FD3通信。您可以创建一个套接字并让C程序连接到该套接字。但不管你做什么别人也能做。
唯一想到的解决方案是文件权限:删除访问C程序的能力,并使Perl程序成为一个set-uid脚本,其所有者可以访问C程序。在细节上,
创建拥有此应用程序的用户。我们称之为myProg
chown myProg myCProg myPerlProg
chmod 700 myCProg
chmod 4755 myPerlProg

07-27 19:31