
5个回答
展开全部
用fork启动子进程(另外一个程序)。
主进程处理SIG_CHLD信号,用waitpid回收。
主进程处理SIG_CHLD信号,用waitpid回收。
追问
这种处理方法要用到 listen 和 socket 而且 waitpid 并不返回子线程在控制台上的输出结果。 有没有能处理 execle 起来的程序返回结果的?是不是要用到重定向? 除了nohup 就没有其他解决方法了吗?
追答
不,这同listen和socket没一点关系。这个方法本身也同重定向也没关系!
nohup那是挂后台!也没关系! 这是最常见的打开子进程的方法。只是nohup和socket编程用到这个方法。
fork之后,子进程内execl:
pid = fork();
if(pid == 0) { /* 子进程 */
execl....
}else{
/* 父进程 */
...
}
同学,waitpid返回的是状态,不是标准输入输出!标准输入和输出需要你自己处理!默认父子进程共享stdin和stdout.
你想要什么结果?
如果只想要程序执行的结果, 用popen.
或者用pipe, 在父进程控制pipe的读端,子进程控制pipe的写端,如果不能改动要execl的代码,在子进程把STDOUT_FILENO(2)重定向(调用dup2)到pipe的写端。 当然,如果要访问STDIN_FILENO, 同样处理。
展开全部
使用system函数调用另外一个程序,可以返回结果。系统会自动fork一个子进程,然后exec执行另外的程序,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用nohup命令启动让程序后台执行!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
trace
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你百度 csdn 注册一个 会员
这个是中国 程序员 喜欢的网站 啥的
然后搜索 你想要的程序 你就可以下载 可能需要一点的 分数 可是 你要是注册了就行 反正免费的
然后不会的 到上面问 那上面的 版主 几十年的技术
这个是中国 程序员 喜欢的网站 啥的
然后搜索 你想要的程序 你就可以下载 可能需要一点的 分数 可是 你要是注册了就行 反正免费的
然后不会的 到上面问 那上面的 版主 几十年的技术
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |