我是靠谱客的博主 文艺八宝粥,最近开发中收集的这篇文章主要介绍system和popen的用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.system

#include <stdlib.h>
int system(const char *command);

system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During execution of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.
system()函数执行了三步操作:
(1)fork一个子进程;
(2)在子进程中调用exec函数去执行command;
(3)在父进程中调用wait去等待子进程结束。 对于fork失败,system()函数返回-1。 如果exec执行成功,也即command顺利执行完毕,则返回command通过exit或return返回的值。 (注意,command顺利执行不代表执行成功,比如command:“rm debuglog.txt”,不管文件存不存在该command都顺利执行了) 如果exec执行失败,也即command没有顺利执行,比如被信号中断,或者command命令根本不存在,system()函数返回127. 如果command为NULL,则system()函数返回非0值,一般为1。

2.popen

#include <stdio.h>
FILE *popen(const char *command, const char *type);
int pclose(FILE *stream);

The popen() function opens a process by creating a pipe, forking, and invoking the shell. Since a pipe is by defini-tion unidirectional, the type argument may specify only reading or writing, not both; the resulting stream is corre-
spondingly read-only or write-only.
popen()返回值是一个普通的标准I/O流,只能用pclose()关闭,参数type可以是w或r,如果是"w",则返回的文件指针是可写的,向这个流的写入转化成对command命令的输入,如果是"r",读取一个被popen了的流,相当于读取command命令的标准输出。

references
[1] https://blog.csdn.net/sk983671939/article/details/79726854 system
[2] https://my.oschina.net/renhc/blog/54582 system报错解决
[3] http://wyq.me/blog/2014/08/11/关于linux-c中的system函数的返回值/
[4] https://blog.csdn.net/u012317833/article/details/39380041 popen

最后

以上就是文艺八宝粥为你收集整理的system和popen的用法的全部内容,希望文章能够帮你解决system和popen的用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部