例如,让我们说父函数有:
scanf("%s", str);
if (strcmp(str,"test")==0)
printf("Success!\n);
这里是子函数:
signal(SIGUSR1, speak);
sleep(5);
kill(0, SIGUSR1)
,睡眠功能是:
void speak()
{
puts("test");
}
为什么父母的功能永远不会成功?是因为puts
函数没有从键盘写入?我有办法解决这个问题吗?
答案 0 :(得分:0)
为什么父母的功能永远不会成功?是因为put函数不能从键盘写入吗?我有办法解决这个问题吗?
我认为您允许子进程从父进程继承其标准流,以便父进程和子进程共享它们。您似乎有一个奇怪的想法,即写入stdout
的数据应反馈给stdin
。虽然可以通过创建管道并重新分配标准流来安排,但这样做并不正常,更不用说自动了。
如果要通过流I / O在两个进程之间执行IPC,那么在它们之间创建管道是少数几种方法之一,也许是最简单的方法。当进程与父/子相关时尤其如此。
答案 1 :(得分:0)
我们可以在不使用pipe的情况下进行重定向。据我所知,你的目标是通过子进程打印到stdout并通过父进程从stdin读取。
这是一个解决方案:
freopen("myfile.txt","r",stdin);
------>在创建子项后在父进程中执行此操作。
freopen("myfile.txt","w",stdout);
------>在创建子项后在子进程中执行此操作。