我在这里想一个小单元测试。 但是,如我所料的程序不能正常工作。
char *args[2];
args[0] = (char*)"/usr/bin/firefox";
args[1] = NULL;
pid = fork();
printf("forked and my pid is %d\n",pid);
//check for errors
if (pid<0){
printf("Error: invoking fork to start ss has failed, Exiting\n ");
exit(1);
}
//the child process runs firefox
if (pid==0){
if (execv(args[0],args)<0){
perror("Error: running s with execvp has failed, Exiting\n");
}
printf("IVE BEEN KILLED\n");
}
//dad is here
printf("DAD IS GOING TO KILL U\n");
if (pid>0){
sleep(3);
kill(get_pidof(string("firefox")),SIGUSR1);
}
现在,我希望该程序如下运行:1。儿童运行的Firefox(它一定支持)2,爸爸打印爸会杀了U(到目前为止好)3,火狐将开启3秒,然后关闭(这是否太)4,子进程将完成运行execv和打印“IVE被杀害”。 这不会发生。
我的目标是要知道哪些execv运行程序已经execv之后提出几个标志完成继续运行(其中香港专业教育学院被杀害的printf是)。 我有几千行代码,并且不希望使用其他的方法,除非必要的。
谢谢