我试过系统(),但不知何故,当辅助程序运行时,我的主程序(执行辅助程序的主程序)挂起
第二个问题是我如何获得我的主程序中的辅助程序的进程ID?
对于相同的信号有多个信号处理程序是否有效?
shell如何pipesubprocess?
为什么没有加载持久的用户设置?
在Linux中debuggingC ++
你怎么实际使用C库?
在你想fork的父进程中。
Fork创建一个全新的进程,并将子进程的pid返回给调用进程,将0返回给新的子进程。
在子进程中,你可以使用像execl这样的东西来执行你想要的辅助程序。 在父进程中,您可以使用waitpid来等待孩子完成。
这里是一个简单的例子:
#include <iostream> #include <sys/wait.h> #include <unistd.h> #include <cstdio> #include <cstdlib> int main() { std::string cmd = "/bin/ls"; // secondary program you want to run pid_t pid = fork(); // create child process int status; switch (pid) { case -1: // error perror("fork"); exit(1); case 0: // child process execl(cmd.c_str(),0); // run the command perror("execl"); // execl doesn't return unless there is a problem exit(1); default: // parent process,pid Now contains the child pid while (-1 == waitpid(pid,&status,0)); // wait for child to complete if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { // handle error std::cerr << "process " << cmd << " (pid=" << pid << ") Failed" << std::endl; } break; } return 0; }
使用fork创建一个新进程,然后exec在新进程中运行一个程序。 有很多这样的例子。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。