gpt4 book ai didi

c - 阻止进程使用 C 获取输入

转载 作者:行者123 更新时间:2023-11-30 15:42:59 25 4
gpt4 key购买 nike

我有一个模拟 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 运行时,儿子总是会获取输入。

最佳答案

防止您的子进程获取输入。我认为您可以尝试在子进程中使用 dup2 将 stdin 重定向到 null。

int fd = open("/dev/null", O_RDONLY);
dup2(fd, STDIN_FILENO);
close(fd);

关于c - 阻止进程使用 C 获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19985435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com