C++ 如何在C中运行外部程序,并通过ps命令使其不可见?

C++ 如何在C中运行外部程序,并通过ps命令使其不可见?,c++,c,C++,C,我创建了一个C程序,在CentOS系统上运行外部命令。我使用系统(cmd)运行外部命令,但此命令可通过ps命令查看 下面是我的程序runit的一个示例: ./runit "mongo mongodb://username:password@localhost:27017/admin" 它使用字符串作为命令行参数,用于启动mongo shell进程。在runit的源代码中,它运行mongo shell,如下所示: int main(int argc, char **argv){ char

我创建了一个C程序,在CentOS系统上运行外部命令。我使用
系统(cmd)
运行外部命令,但此命令可通过
ps
命令查看

下面是我的程序
runit
的一个示例:

./runit "mongo mongodb://username:password@localhost:27017/admin"
它使用字符串作为命令行参数,用于启动mongo shell进程。在
runit
的源代码中,它运行mongo shell,如下所示:

int main(int argc, char **argv){
    char *cmd = argv[1];
    printf("%s\n", cmd);
    if (argc > 1) {
        char *arg_end;    
        arg_end = argv[argc-1] + strlen (argv[argc-1]);
        *arg_end = ' ';
        }
    system(cmd);
    exit(100);
}

当我使用
ps-ef | grep runit
命令时,它不会显示命令行参数。但当我运行
ps-ef | grep mongo
时,它确实会显示出来。我有没有办法将命令行参数隐藏在
system()
方法中?

“只能被用户找到”-那么谁应该找不到该程序?你在问这个问题吗@mkrieger1我的意思是通过
ps
命令不查找。如果不是通过
ps
等命令行工具,用户如何查找程序?是否可以通过
/proc
找到程序?通过基于GUI的工具
top
/
htop
?您不能通过
ps
命令隐藏程序-至少在基于Unix的计算机上不能。