调用execv时,到父进程的stdin被阻止
stdin to parent process blocked when calling execv
我创建了一个应用程序,该应用程序使用fork
和execv
启动两个子进程。
string process; //initialized before execv call
char** process_args; //initialized before execv call
int pid = fork();
if(pid == 0) {
execv(process.c_str(), process_args);
}
进程启动,但会阻止父进程访问STDIN
,直到每个子进程都退出。我希望父进程在子进程仍在运行时能够访问STDIN
。
这可能吗?如果可能,怎么做?我不必使用execv
。一旦启动,这些流程实际上不需要对彼此有任何概念。
谢谢!
在exec*()
之前关闭孩子的STDIN
。
相关文章:
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- IPC使用多个管道和分支进程来运行Python程序
- 异常属于C++中的线程还是进程
- WMI检测进程创建事件-c++
- c++多进程编写一个唯一的文件
- 如何在C++中将函数发送到另一个进程
- 从stdin读取时子进程挂起(fork/dup2竞争条件)
- 当使用带有stdin和stdout重定向的双进程管道时,如何避免stdin上的重复输入
- 将类型化数组写入子进程 stdin 无法正常工作
- 使用管道从 STDIN 读取分叉进程时出现问题
- 如何将wstring缓冲区发送到子进程的stdin
- 如何正确启动进程并转发 stdin/stdout/stderr
- 从 Python 子进程中的 stdin 读取挂起在 C++/Python IPC 中
- 通过 Windows 管道写入进程 STDIN
- 调用execv时,到父进程的stdin被阻止
- 仅重定向子进程stdin,并从stdout和stderr中删除数据
- 如果stdin被另一个进程的管道替换,Std::getline将中断
- 如何在c++中使用popen打开一个进程,而不将输入和输出定向到stdin