假设我有一个 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] 变量中。
从 C 程序中提取输出是否有比使用 printf 打印更好的方法?例如,任何人都可以从命令行运行“myCProg”并查看输出。我希望输出只能在 perl 程序中看到,如果有人在命令行运行该程序则看不到。
有人知道怎么做吗?
抱歉,我手边没有 C 程序,但任何有 printf 语句(即使是简单的 Hello World)并带有参数(也许打印“Hello [yourname]”)的东西都适用于这个例子。
您可以加密通信。您可以通过 fd 3 进行通信。您可以创建一个套接字并让 C 程序连接到该套接字。但无论您做什么,其他人也可以做。
想到的唯一解决方案涉及文件权限:删除访问 C 程序的能力,并使 Perl 程序成为其所有者有权访问 C 程序的 set-uid 脚本。详细点,
- 创建一个拥有此应用程序的用户。我们称它为
myProg
。
chown myProg myCProg myPerlProg
chmod 700 myCProg
chmod 4755 myPerlProg
我是一名优秀的程序员,十分优秀!