我希望从父程序(称为守护程序)使用 args 启动 5 个测试程序的子进程(全部 5 个并行,而不是等待完成)。
我有以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char* argv[]){
//missing irrelevant part where argum is set
int status,i;
char cmd[512];
pid_t process_id = 0;
for (i=0; i<=5;i++)
{
process_id = fork();
if (process_id < 0)
{
printf("fork failed - %d!\n",i);
continue;
}
else if(process_id > 0) {
printf("process_id of child process %d \n", process_id);
}
else
{
sprintf(cmd,"./test %s",argum);
status = system(cmd);
exit(0);
}
}
return 0;
}
它会启动它们,但是当我运行 ps -aux 来查看进程时,除了好的进程(例如:./test [args])之外,还有一些重复项,例如:sh -c ./test [args]
我怎样才能摆脱那些以 "sh -c" 开头的?