linux c system函数调用命令,如何得到显示信息。

w_dalu 2010-06-27 03:52:16
#include <stdio.h>
#include <stdlib.h>

main()
{
char url[1024] = {0};
char command[512] = {0};
char result[2024] = {0};
strcpy(command, "ifconfig eth0");
system(command);
}


linux c system函数,返回的整形数值,如何得到待执行的命令ifconfig eth0 返回的信息,并赋给一变量。
或者有没有其他函数或方法能够得到命令显示的信息?

[root@localhost taskSplit]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr XX:A9:XX:39:44:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8401087 errors:0 dropped:0 overruns:0 frame:0
TX packets:8699464 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6003800449 (5.5 GiB) TX bytes:4497202637 (4.1 GiB)
Interrupt:50 Base address:0x2000
...全文
1359 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyc369191846 2010-06-27
  • 打赏
  • 举报
回复
不是很明白哈~
w_dalu 2010-06-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jcwkyl 的回复:]

引用 1 楼 do_fork 的回复:

man popen


同意1楼,使用popen。示例代码如下:
C/C++ code

#include <stdio.h>

int main() {
FILE *pf;
char buffer[4096];

pf = popen("/sbin/ifconfig", "r");
fread(buffer……
[/Quote]

正是所需,这里高人不少,受教了。
WizardOz 2010-06-27
  • 打赏
  • 举报
回复
popen 正解
jcwKyl 2010-06-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 do_fork 的回复:]

man popen
[/Quote]

同意1楼,使用popen。示例代码如下:

#include <stdio.h>

int main() {
FILE *pf;
char buffer[4096];

pf = popen("/sbin/ifconfig", "r");
fread(buffer, sizeof(buffer), 1, pf);

printf("%s\n", buffer);

pclose(pf);
return 0;
}



popen是个非常好用的工具。比如结合popen和nc可以写一个简易的smtp客户端程序。
DCMorgan 2010-06-27
  • 打赏
  • 举报
回复
下面程序在我机器上运行时直接打印输出 ifconfig 所有信息了。
等同于在 bash 下运行 ifconfig.

int
main(void)
{
system("ifconfig");

return 0;
}

do_fork 2010-06-27
  • 打赏
  • 举报
回复
man popen
资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在C语言中,system()函数是一个功能强大的工具,它允许程序员调用操作系统级别的命令,例如启动其他程序或运行Shell命令等。该函数定义在头文件中,其语法为:int system(const char *command);。其中,command参数是一个指向字符串的指针,该字符串包含了需要执行的命令。函数执行完成后会返回一个整数值:如果命令执行成功,通常返回命令的退出状态码(一般情况下,0表示成功,非0表示出错);如果函数本身调用失败,则返回-1。 在Linux环境下,system()函数的实现过程如下: 参数检查:如果command参数为空,system()函数会直接返回1,表示命令无效。 创建子进程:通过调用fork()函数创建一个子进程。fork()会在父进程和子进程中分别返回不同的值:在子进程中返回0,在父进程中返回子进程的进程ID。 子进程执行命令:子进程调用execl()函数来执行指定的命令。在这个过程中,execl()使用/bin/sh作为可执行文件,"sh"作为程序名称,"-c"作为参数,而cmdstring则是具体的命令字符串。 父进程等待子进程结束:父进程通过调用waitpid()函数来等待子进程完成,并获取其退出状态码。 返回结果:system()函数将子进程的退出状态码作为结果返回给调用者。 在Windows系统中,system()函数的实现则依赖于ShellExecute()函数。ShellExecute()函数的原型为:HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpVerb, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory,

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧