大佬们问个forkpty函数的问题
linux吧
全部回复
仅看楼主
level 7
TVPanShow 楼主
pid_t pid;
int pty;
pid=forkpty(&pty,NULL,NULL,NULL);
printf("%d\n",pid);
这段代码forkpty运行后只返回了一个值,一个大于0的值,forkpty应该会创建新进程后返回两个值,父进程返回子进程pid,子进程返回0,出错时返回-1。之前都是在返回0时exce今天突然发现只返回一个子进程pid了,这是什么情况?
2023年03月11日 09点03分 1
level 12
来自ChatGPT的回答:
如果你的 forkpty() 函数只返回子进程的 PID,而没有返回 0 或 -1,这可能是因为在子进程中,没有立即执行子进程的 exec() 函数或者其他的操作,所以你在父进程的 printf()函数中打印的是子进程的 pid。在这种情况下,你可以使用子进程中的 pid 来控制和获取子进程的信息,或者你可以让子进程执行其他需要的操作后,在父进程中通过 wait() 函数等待子进程退出并得到子进程的返回值。
2023年03月11日 10点03分 2
[惊哭]
2023年03月11日 10点03分
我**了,把代码块放错了位置导致死活不运行,还以为出了什么灵异事件[狂汗]
2023年03月14日 08点03分
@TVPanShow 脑子残了(也和谐。。。)
2023年03月14日 08点03分
1