假设我有一个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&#39;从命令行也看到输出。我希望输出只能在perl程序中看到,如果有人在命令行运行该程序,则无法查看。
任何人都知道怎么做?
抱歉,我没有方便的C程序,但任何有printf语句的东西(甚至是简单的Hello World)都会参与(可能是打印&#34; Hello [yourname]&#34;适用于这个例子。
答案 0 :(得分:0)
您可以加密通信。您可以通过fd 3进行通信。您可以创建一个套接字并让C程序连接到该套接字。但无论你做什么,其他任何人都可以做到。
想到的唯一解决方案涉及文件权限:删除访问C程序的功能,并使Perl程序成为其所有者可以访问C程序的set-uid脚本。详细说明,
myProg
。chown myProg myCProg myPerlProg
chmod 700 myCProg
chmod 4755 myPerlProg