【发布时间】:2016-05-16 16:01:05
【问题描述】:
我想创建将在后台运行的 c++ 程序或 bash 脚本,并且每当我使用所选命令时,例如
pwd 它将捕获该命令的输出,假设为~Desktop/folder1,并将该输出更改为You are in ~Desktop/folder1。所以结果将是该用户在使用命令pwd 后只会看到You are in ~Desktop/folder1。
pwd 命令只是示例,我想修改其他命令的输出,如 ls、ps 等。
我希望脚本可以在所有终端中运行,也就是说,如果我打开另一个终端,它仍然会在该终端中捕获所选命令的输出。
问题:
是否有可能做 c++ 程序或 bash 脚本来做这样的事情?
【问题讨论】:
-
当然可以。内核模块可以拦截所有写入。真正的问题是;你为什么要这个?
-
@JesperJuhl,当然,但是内核模块既不是 C++ 程序也不是 bash 脚本。
-
或者,如果您下定决心要更改标准输出并且使用 c++ 进行编码,只需通过修改原始 src 代码并重新编译来重新设计输出。您可以为
--old-style添加一个标志以保留原始格式。再一次,真正的问题(这超出了 S.O. 的范围)是您为什么要这样做? ;-/ 祝你好运? -
我需要为我大学的实验室创建脚本或程序,这将对其他用户隐藏我的文件之一,我需要隐藏隐藏它的进程,所以我想我会抓住 ls命令并搜索我需要隐藏的文件并将其剪切掉,这样它就不会显示出来,与 ps 命令相同。然而问题是我不知道如何以及是否可以做到。编辑:修改原始 src 的问题是
ls命令有 9000 行代码......真的很难找到我应该从哪里开始。 -
非特权进程不能监控其他用户的进程,也不能干预他们的输出。但是,如果您的进程可以获得足够的权限,那么它可以简单地替换系统的
ls命令。它不需要掩饰自己,因为一旦它的工作(插入被黑的ls)完成,它就会退出。
标签: c++ linux bash background output