我想一個小單元測試在這裏。但該計劃不能按我的預期工作。現在fork()的殺()和execv()
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. Firefox將打開3秒,然後關閉(也是如此) 4.子進程將完成運行execv並打印「IVE BE KILLED」。這不會發生。
我的目標是要知道哪些execv運行程序已經execv之後提出幾個標誌完成繼續運行(其中香港專業教育學院被殺害的printf是)。 我有一個幾千行代碼,不想使用其他方法,除非必要。
感謝
我已經重新標記這是C.有沒有C++代碼中的例子可見一斑! – Rook