c - 学习如何使用 C 中的管道同步父进程和子进程的执行
问题描述
我有这个程序
int main()
{
char *s, buf[1024];
int ret, stat;
s = "Use for syncing\n";
ret = fork();
if (ret == 0)
{
printf("Child line 1\n");
printf("Child line 2\n");
}
else
{
printf("Parent line 1\n");
printf("Parent line 2\n");
wait(&stat);
}
}
该程序的输出当前是
Parent line 1
Parent line 2
Child line 1
Child line 2
但我需要更改代码以使子进程和父进程同步,因此所需的输出是:
Child line 1
Parent line 1
Child line 2
Parent line 2
我在概念上难以理解如何执行此操作,我知道何时ret = fork()
调用它会返回一个不等于 0 的整数,因此,它将转到 if-else 的 else 部分,然后 ret 的值将变为 0进程成功返回后,将进入 if-else 的 if 部分。我尝试wait(&ret)
在 else 语句中使用,以便程序等待ret
返回 0,但这只会返回与当前输出相反的值。这就是我对同步的理解结束的地方,所以我坚持这一点。
谢谢
解决方案
推荐阅读
- turing-machines - 图灵机转换表
- java - 如何在java中的方法参数中传递类类型
- javascript - 与另一个对象相交时应该调用动作的循环类的问题
- c++ - C++ Boost 侵入式列表 - 示例
- python - Python中的快速排序递归
- haskell - 这个错误在haskell中不断发生关于如何修复它的任何想法?
- android - 如何在 OnPreferenceChange 中保存另一个值而不是 newValue?
- django - 在通用视图中实现表单的 Django 问题
- python - 如何将谷歌电子表格制作成列表或间隔良好的字符串?
- angular - 根据Angular中的日期值更改动态创建的表中的行颜色