我试过系统(),但不知何故,当辅助程序运行时,我的主程序(执行辅助程序的主程序)挂起
第二个问题是我如何获得我的主程序中的辅助程序的进程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; }