关于fork和vfork的问题

weixin_38055393 2003-08-04 02:46:51

请大伙看看下面的代码,fork产生一个新的进程,在uclinux下,只能改成vfork。但是改过了之后,就不能像原先那样正确运行,请教大伙,fork和vfork在这里到底有什么区别呢?

int term_init(void)
{
char pty_name[12];
int n = 0;
pid_t pid;

again:
sprintf(pty_name, "/dev/ptyp%d", n);
if ((tfd = open(pty_name, O_RDWR | O_NONBLOCK)) < 0) {
if ((errno == EBUSY || errno == EIO) && n < 10) {
n++;
goto again;
}
fprintf(stderr, "Can't create pty %s\n", pty_name);
return -1;
}
signal(SIGCHLD, sigchild);
signal(SIGINT, sigchild);
if ((pid = fork()) == -1) {
^^^^^^^

fprintf(stderr, "No processes\n"
return -1;
}
if (!pid) {
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
close(tfd);

setsid();
pty_name[5] = 't';
if ((tfd = open(pty_name, O_RDWR)) < 0) {
fprintf(stderr, "Child: Can't open pty %s\n", pty_name);
exit(1);
}
dup2(tfd, STDIN_FILENO);
dup2(tfd, STDOUT_FILENO);
dup2(tfd, STDERR_FILENO);
execv(nargv[0], nargv);
exit(1);
}
return 0;
}
...全文
32 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

477

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧