共 1 篇文章

标签:Linux C程序如何调用Shell命令 (linux c 调用shell)

Linux C程序如何调用Shell命令 (linux c 调用shell)

概述 在Linux C程序中,如果想要调用Shell命令,可以使用system函数或popen函数。system函数是调用Shell命令来执行某个操作,并将结果输出到标准输出设备。popen函数可以执行Shell命令,并可以通过管道来在程序中传递数据。 system函数 系统函数可以使用man system手册页面,在终端输入`man system`来查看。在Linux中,system函数的原型如下: “`c int system(const char *command); “` 该函数可以执行command字符串中指定的Shell命令,并将命令的输出结果输出到标准输出设备。如果命令执行成功,system函数返回0,否则返回非0值。 下面是一个使用system函数调用Shell命令的示例: “`c #include #include int mn() { int ret = system(“ls -la”); if (ret == 0) { printf(“Command executed successfully!\n”); } else { printf(“Command fled to execute!\n”); } return 0; } “` 上述代码中,我们调用了system函数来执行了一个`ls -la`命令,该命令会将当前目录下的所有文件和文件夹以长格式列出。如果system函数返回0,表示命令执行成功,我们在程序中输出一条成功执行的信息;反之,表示命令执行失败,我们在程序中输出一条错误信息。 popen函数 popen函数与system函数类似,都可以调用Shell命令。不同的是,popen函数可以通过管道来在程序中传递数据。也就是说,我们可以通过popen函数来获取Shell命令的输出结果,并将结果传递给程序中的其他函数。 popen函数同样可以使用man popen手册页面,在终端输入`man popen`来查看。在Linux中,popen函数的原型如下: “`c FILE *popen(const char *command, const char *type); “` popen函数接受两个参数,之一个参数command是要执行的Shell命令,第二个参数type是指定管道的类型,取值为”r”或”w”。如果type为”r”,则将建立一个只读管道,可以从管道中读取Shell命令执行的输出结果;如果type为”w”,则建立一个只写管道,可以将数据写入管道传递给Shell命令。 下面是一个使用popen函数调用Shell命令并传递数据的示例: “`c #include #include int mn() { FILE *fp; char buff[1024]; fp = popen(“ls -la”, “r”); if (fp == NULL) { printf(“Fled to open pipe!\n”); exit(1); } while (fgets(buff, sizeof(buff), fp) != NULL) { printf(“%s”, buff); } pclose(fp); return 0; } “` 在上述代码中,我们使用popen函数来执行一个`ls -la`命令,并建立一个只读管道来读取命令的输出结果。在循环中,我们使用fgets函数从管道中读取每一行输出结果,并将其打印到标准输出设备中。最后我们使用pclose函数关闭管道。 结论 相关问题拓展阅读: 在linux 用shell脚本调用C语言的执行文件,用到什么函数,求大神帮分析一下 ASP.NET 如何调用linux下的Shell脚本程序? 在linux 用shell脚本调用C语言的执行文件,用到什么函数,求大神帮分析一下 c调用蔽含蚂shell为system(cmd) shell调用c执老败行文件和调用普通的命令宏埋一样,如 ls cd pwd等命令都是c写的执行文件...

技术分享