我有一个模拟 shell 的程序,我正在创建一个在后台运行的可能性,当我使用 FORK -> EXEC 运行另一个进程时,它有时仍然会得到输入(上下文切换或 smthng)我想完全阻止我的进程shell 使其与 linux 中的 & 运算符完全一样。我正在寻找带有信号的解决方案,但找不到任何方法。有什么建议么?
if((son = fork())==0){//son process
getcwd(cur, 1024);
strcat(cur, "/");
strcat(cur, tokens_set[0]);
tokens_set[0] = cur;
i = execvp(tokens_set[0],tokens_set); //run the command
if(i == (-1)){
perror("couldn't find the command: ");
}
exit(0);
}else{ // father process
printf("and father proccess goes on\n");
}
然后父进程继续,子进程只是一个获取输入-> 打印相同的程序。在我的情况下,有时父亲得到输入,有时得到儿子。同样,当我使用 valgrind 运行时,儿子总是得到输入。