我创建了一个C程序来在CentOS系统上运行外部命令。我使用system(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()
方法中隐藏命令行参数?