C编程linux,读取系统输入,如ping或ls-l
我尝试创建一个自定义方法,该方法导致返回带有系统输出的char 伪代码是这样的C编程linux,读取系统输入,如ping或ls-l,c,linux,system,C,Linux,System,我尝试创建一个自定义方法,该方法导致返回带有系统输出的char 伪代码是这样的 char *my_Out(char *in ){ in = system ("ping %s",in); return in; } 谢谢您的帮助。您可以使用popen,它返回一个流,您可以从中读取输出。通过将文件读入一个字符串(可能是一个根据需要动态增长的字符串),您可以实现您所要求的功能。 system()不是printf样式的函数。之前,您需要使用sprintf()创建参数 system()的返
char *my_Out(char *in ){
in = system ("ping %s",in);
return in;
}
谢谢您的帮助。您可以使用
popen
,它返回一个流,您可以从中读取输出。通过将文件读入一个字符串(可能是一个根据需要动态增长的字符串),您可以实现您所要求的功能。
system()
不是printf样式的函数。之前,您需要使用sprintf()
创建参数system()
的返回值是int,而不是char你想干什么?看起来这个函数所做的一切都是运行
ping
(如果没有-c参数,它将永远无法在linux上完成运行)。不过,如果您正在查找ls-l
中包含的一条信息,比如说,您可以使用库函数(stat
)轻松地获得它@Jefromi:+1以供参考,尽管一个小nit:stat
通常是一个系统调用,而不是库函数:-PChris:stat
通常是一个包装系统调用的库函数(住在nit附近的人…@caf:现在是的(因为内核版本之间的struct stat
布局不同,并且需要保持用户代码二进制兼容)。最初,不,这是一个直接的系统调用。尽管如此,这是个好消息+1我不同意第3点。虽然它可能不寻常,打破了您的风格,但它没有任何问题。如果您包含
(声明system()
),您就会知道它返回一个整数,而不是字符*
。
Duplicate the stdout to some other file descriptor by using dup2.After the execution of the command read all the lines from the file using that file descriptor and return it.