fork

    1热度

    1回答

    我有简单的生产者消费者程序在C尝试用fork解决它 生产者试图在管道上写入时我得到错误: 我已经写了另一个程序具有相同的逻辑,但这一个不知道为什么? 生产者未能写管道项目:为什么我得到这个错误,错误的文件描述符 任何人有想法? 由于 #define READ 0 #define WRITE 1 int mutex = 1, full = 0, empty = BUFFER_SIZE, x =

    1热度

    1回答

    我正在实施一个简单的shell程序,实现&和|按预期工作。 但是,我想处理中断,以便在收到SIGINT的情况下,父(shell)和后台进程不应该终止,但任何前台进程都应该终止。 我已经初始化了一个信号和一个处理程序,但我想获得有关如何针对每个进程处理它的不同建议。 void intHandler() { flagInt = 0; fprintf(stderr, "interru

    1热度

    2回答

    我有一个库,它注册了atfork处理程序(通过pthread_atfork()),它在调用fork()时不支持多线程。在我的情况下,我不需要使用分叉环境,因为我只需要在fork()之后立即致电exec()。所以,我想fork(),但没有任何atfork处理程序。那可能吗?我错过任何重要的边缘情况吗? 对于背景信息,库是OpenBlas,问题描述为here和here。

    0热度

    1回答

    某些库可能会使用pthread_atfork()注册一些处理程序。我不需要它们,因为我只使用fork()和exec()。而且,在某些情况下它们可能会造成麻烦。那么,有没有办法重置注册的处理程序列表? 相关:calling fork() without the atfork handlers,fork() async signal safety。

    1热度

    1回答

    我正在写一个简单的管道程序会要求两个命令,然后运行程序,就好像他们进入bash作为cmd1 | cmd2。然后它应该循环并再次询问,直到其中一个命令是quit。 我已经写了这么多: #include<iostream> #include<string> #include<sys/types.h> #include<sys/wait.h> #include<string.h> #inclu

    1热度

    1回答

    如果我们使用ForkJoinPool框架的RecursiveAction,我们是否需要调用join()? 例如为: left.fork() right.fork() 或 left.fork() right.fork() left.join() right.join() 如果左右两个更新一个共同的数据结构,有没有理由骂加入了左右两部分? 由于提前, Burcak

    1热度

    1回答

    我有一个任务,我需要创建一个父进程和2个子进程具有相同的父亲,第一个子进程需要读取一个字符串并打印它控制台,第二个子进程需要读取另一个字符串并将其打印在控制台中,并且父亲需要连接这两个字符串并将其打印在控制台中。这看起来很简单,但即将面临等待和信号部分的艰难时刻,我无法让父亲先等待孩子进程,以便他可以采取行动。 #include <stdlib.h> #include <fcntl.h> #i

    0热度

    1回答

    看着this post我不明白Kaylum的答案。我有两个问题。 1)他/她希望使用变量“count”来计算产生的进程总数(即子孙孙等的总数+原始进程)。我看到,他/她通过在父进程中将count设置为1开始,这有意义(对父进行计数),但是然后S/he在子进程中再次将计数设置为1。为什么这有意义?计数已经设置为1,并且这只能再次设置计数等于1。 count += WEXITSTATUS(status

    0热度

    1回答

    我正在尝试创建一个简单的GTK应用程序。只要某些文件是由不同的进程创建的,我就想在GUI上写东西。我想我不能在父进程中执行while(true),因为这会冻结GUI。相反,我想叉,检查文件是否存在,并控制GUI,但它似乎没有工作,我笨拙的代码如下: int check_for_files(){ FILE *fp; int files_set; char ch; files_set = 0

    1热度

    1回答

    首先,对不起,如果使用不好的英语。 在我的笔记中,我写过这个子进程通常是制作者,但我不明白为什么。 在fork()调用之后,消费者和生产者是谁? 问题是:如果子进程是生产者,他会在父进程完成之前完成,这意味着子进程成为僵尸进程。 关于这个问题,我试图了解小素描: