DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

在linux系统下,用C++程序执行shell命令有多种方式

管道方式

#include <iostream>
#include <unistd.h>
#include <sys/types.h>

int main()
{
    FILE *pp = popen("cd /xxxx && ls -l", "r"); // build pipe
    if (!pp)
        return 1;

    // collect cmd execute result
    char tmp[1024];
    while (fgets(tmp, sizeof(tmp), pp) != NULL)
        std::cout << tmp << std::endl; // can join each line as string
    pclose(pp);

    return 0;
}

popen会调用fork来产生子进程,由子进程来执行命令行
子进程建立管道连接到输入输出,返回文件指针,输出执行结果
系统调用方式

#include <cstdlib>
int main()
{   
    system("ps -ef| grep myprocess");

    return 0;
}

system函数调用fork来产生子进程,执行命令行

posted on   DoubleLi  阅读(1611)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2016-11-16 Linux下Wi-Fi的实现:wireless_tools和wpa_supplicant
2016-11-16 linux 无线网络配置工具wpa_supplicant与wireless-tools
2016-11-16 VirtualBox 下USB 设备加载的步骤及无法加载的解决办法
2016-11-16 CFLAGS,CPPFLAGS,CXXFLAGS in Makefile
2016-11-16 Makefile编译选项CC与CXX/CPPFLAGS、CFLAGS与CXXFLAGS/LDFLAGS
2016-11-16 Glibc 与 libc 的区别和联系
2016-11-16 Makefile选项CFLAGS,LDFLAGS,LIBS
点击右上角即可分享
微信分享提示