fork

    -2热度

    1回答

    我对函数fork返回的值有点困惑。据我所知,值0是child过程和值>0是为parent过程。 我具有低于 int main() { int pid; pid = fork(); if(pid == 0) //DO SOMETHING else //DO SOMETHING ELSE return 0; } 的va

    -1热度

    1回答

    #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h> void forkexample() { int x = 1; if (fork() == 0) { //printf("this is Child "); ++

    0热度

    1回答

    我想知道您是否可以更改参数 waitpid() 此刻我需要连续变量输出(0.50)作为打印内容。但是,考虑到waitpid()只接受整数,当我尝试打印输出时,它给我0.不确定如何解决这个问题,或者如果这甚至是问题。 计算是指看起来像(1+(2 * 3)/(2 * 7))= 0.5 #include <stdio.h> #include <stdlib.h> #include <unistd.h

    -3热度

    2回答

    我想知道if(fork()== 0) 在下面的程序中后面的控件将在哪里控制 Control到if(fork()== 0)的下一个语句是什么? #include<stdio.h> #include <sys/types.h> #include<unistd.h> void forkexample() { // child process because return value z

    1热度

    2回答

    我试图确定的处理多少总数有以下代码: #include <stdio.h> #include <unistd.h> int main() { int i = 1; if (fork()) //parent process will return PID of child. i++; else if (fork()) //child process (be

    0热度

    1回答

    我正在处理需要我创建shell的任务。我需要在自己的过程中运行大多数命令。但是,当我需要在所有子进程之间实现管道时,会遇到困难。 从我迄今为止所了解的是,我应该在父进程中创建所有管道,然后将管道复制到STDIN/STDOUT。所以我做了,对于这样的每个命令创建一个新的管道功能: int count = 2 * amountOfCommands int fd[count]; for (int i

    0热度

    1回答

    在此论坛中有许多与读写管道有关的问题,但我无法解决我的问题。 下面的代码片段,并以下的事情: 通过命令行参数的文件名是通过pipe_p传递给子进程 子进程打开指定的文件,并将它的内容pipe_c父进程阅读并在屏幕上显示。 一切工作正常,但父进程无法从管道读取数据(因为它不打印任何东西)。 我观察到数据被成功写入子进程,因为我能够通过管道在子进程块中打印内容,但不能在父进程中打印内容。 注意:步骤4

    0热度

    1回答

    我想创建一个进程树,但这里是我的输出是:https://gyazo.com/a71f4e095b69080a6d6a11edd2c0df27 问题是我想使它看起来像我画在右边的图,但可以似乎不知道如何。我正在打印每个子进程的父ID,然后这样做后,我将从2开始删除它们,然后是1(通过在5秒后发送SIGKILL信号)。 如何使流程树看起来像所需的结果?这里是我的代码: #include <stdio.

    0热度

    1回答

    当我运行我的代码第一printParams()呼叫完美的作品。但每次调用fork()后struct失去其所有的char数组值。我并不熟悉指针,但我可以说这个问题的根源可能是基于指针的。例如,第一printParams()将打印出所有在Parse()功能分配的值的。但fork()后,所有的整数值如background和argumentCount的显示,但没有或具有inputRedirect相关联的字

    0热度

    1回答

    为什么在第22行的打印结果是1而不是3? count是一个全局变量,它在handlerA中已经被修改过,为什么它没有保留它在21和22行的值? 1 pid_t pid; 2 int count = 0; 3 4 void handlerA(int sig) { 5 count += 2 6 printf("count = %d\n", count); 7 fflush(stdo