如何让应用程序阻止自己从命令行启动?
我有一个应该由守护进程启动的二进制文件;但是当有人试图从命令行启动二进制文件时,我应该错误地指出“无法从命令行启动”。尝试谷歌搜索但徒劳无功。
PS。http://www.daniweb.com/software-development/c/threads/449682/stop-launching-from-command-line 我想检查是否有比链接中提到的更好的方法..
如何让应用程序阻止自己从命令行启动?
我有一个应该由守护进程启动的二进制文件;但是当有人试图从命令行启动二进制文件时,我应该错误地指出“无法从命令行启动”。尝试谷歌搜索但徒劳无功。
PS。http://www.daniweb.com/software-development/c/threads/449682/stop-launching-from-command-line 我想检查是否有比链接中提到的更好的方法..
我不确定是否有防弹答案(关于如何防止从命令行启动程序)。你可以考虑
STDIN_FILENO
(即 0)不是 tty/dev/tty
(它应该会失败)见tty(4)而且我不确定您是否总是想拒绝从终端启动。对于调试,您肯定希望能够从终端启动。如果从终端开始,我实际上只会警告,而不是退出。
而且您可能希望在标准路径之外安装程序,可能在某些libexec/
或sbin/
目录中。
作为记录,只有当您自己编写二进制文件时,才使用 isatty(3) 进行测试。如果您试图阻止人们启动第三方二进制文件,该方法将失败。
一般来说,为了防止人们从命令行启动特定程序,*nix 方式是chown
二进制文件由启动它的守护进程拥有,并且由组拥有说no_command_line
. 然后chmod 705 binary_executables
,将所有不允许从命令行运行 binary_executables 的人放入组中no_command_line
。
高温高压