【发布时间】:2014-03-18 06:23:25
【问题描述】:
我正在分叉,并在子进程中执行某个块。我的问题是我的子进程永远不会进入 if 语句。这是为什么呢?
if((x = strcmp(subargs[next_redirect], ">")) == 0)
{
pid = fork();
fprintf(stderr, "my PID is %i\n", pid);
if(pid == 0)
{
fprintf(stderr, "the name of our file is %s\n", subargs[i+1]);
fp = creat(subargs[i+1], S_IWUSR | S_IRUSR);
dup2(fp, STDOUT_FILENO);
close(fp);
//create sub-command
makesubcommand(subcommand, subargs, last_redirect + 1, i);
execvp(subcommand[0], subcommand);
}
last_redirect = i;
next_redirect = getnextredirect(subargs, i+2, subargc);
}
我的输出是
my PID is 11080
my PID is 0
当你 fork 时,子进程收到的 PID 为 0,对吗?
我的问题是if(pid == 0){}。该块中的代码永远不会执行。
【问题讨论】:
-
你将字符串与字符进行比较 ....">" 检查一次...
-
分叉后你还在等,为什么?
-
@vinod:我很顺利。我的问题不是 strcmp。
-
你的孩子大多不出来
wait(0); -
在回答过程中大幅修改您的问题不是一个好主意,因为这可能会使某些答案难以理解。
标签: c if-statement fork pid