首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux c程序中获取shell脚本输出

前言   Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。...通常在程序中通过 system函数来调用shell命令。但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令在控制台上输出的结果。...方法就是fork一个子进程,并创建一个匿名管道,在子进程中执行shell命令,并将其标准输出dup 到匿名管道的输入端,父进程从管道中读取,即可获得shell命令的输出,代码如下:   /**   *..., const char *type);   该函数的作用是创建一个管道,fork一个进程,然后执行shell,而shell的输出可以采用读取文件的方式获得。...  -rwxr-xr-x 1 root root 480 09-30 00:13 execve.c   -rwxr-xr-x 1 root root 1811 09-29 21:33 fork.c

5.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    60行C代码实现一个shell

    我们来看看如何60行C代码实现一个shell! 在实现它之前,先看看这样做的意义。 美是有目共睹的。Unix之美,稍微体会,便能得到。...在Unix/Linux中,各种shell本身就实现了这样的功能,但是为了彻底理解这种处理方式的本质,只能自己写一个才行。来写一个微小的shell吧。...这个tiny shell命令解析器的逻辑可以表示如下: ? 现在,让我们用上面的tiny shell来实现式子 ?...的计算,我需要写表示四则混合运算符的Unix程序,首先看加号运算符程序,将上文中plus.c改成从标准输入读取加数即可: // plus.c // gcc plus.c -o plus #include...如果我们的系统中没有任何shell程序,比如我们没有bash,我们只有tinysh,加上以上这4个程序,一共5个程序,就可以完成任意算式的四则混合运算。

    70730

    教你如何开发不可检测的C#、C++反向Shell

    在这篇文章中,我将跟大家分享如何利用C#和C++来开发反病毒产品无法检测到的反向Shell。 ? 简单的C#反向Shell GitHub上有很多能够通过cmd.exe打开反向ShellC#代码样本。...检测报告:【点击阅读原文获取】 C++反向Shell+一定程度的持续感染 搜索片刻之后,我发现了一份有类似反向Shell功能的C++代码。...,所以我想用这种技术来开启我的反向ShellC#)。...下图中包含待编译C#代码的原始结构(Rev.Shell代码): ?...运行命令之后,会发生下面几件事情: 1、 非无文件型:C#源代码需要从Rev.Shell文件中获取; 2、 无文件型:C# Payload会被编译并执行; 3、 无文件型:Payload开启反向Shell

    2K30

    ShellShell脚本入门

    所以Shell命令是用户操作计算机硬件的桥梁, Shell是命令, 类似于windows系统Dos命令 Shell是一个门程序设计语言, Shell里面含有变量, 函数, 逻辑控制语句等等 Shell...脚本 通过Shell命令或程序编程语言编写的Shell文本文件, 这就是Shell脚本 , 也叫Shell程序 为什么学习Shell脚本?...通过Shell命令与编程语言来提高linux系统的管理工作效率 Shell的运行过程 当用户下达指令给该操作系统的时候,实际上是把指令告诉shell,经过shell解释,处理后让内核做出相应的动作。...shell; /bin/bash Bourne Again Shell它是Bourne Shell的扩展,简称bash,是LinuxOS默认shell,有灵活和强大的编辑接口,同时又很友好的用户界面,交互性很强.../bin/csh C ShellC语言风格Shell /bin/tcsh 是C Shell的一个扩展版本。

    24830

    ​meterpreter shell | 加固shell

    -0193211/ metasploit 中的 meterpreter shell 是一个我们比较喜欢的shell,因为方便我们后续加载各种模块,简直不要太方便 所以我们这次把一个简单的shell升级为...可以看到现在状态还是一个普通shell,并不是一个tty,现在我们来变个魔术 在这个shell中输入 background 在对话中选择 y 成功将shell放在了后台 ?...我们使用 sessions -u 1 将普通shell提升为 meterpreter shell(创建一个新的shell) ?...可以看到有一个新的meterpreter shell 产生了,仔细看回显其实可以看出实际上是调用了 post/multi/manage/shell_to_meterpreter 我们进入这个shell来测试一下吧...可以看到成功获取到meterpreter 的shell,这个shell 功能太全了,之前说的命令补全、Ctrl+c 不退出 但是默认不支持 su,ssh等 当然可以使用msf的库来实现了

    1.7K20

    Shell:子shell概念

    目录 shell环境 什么是子shellshell的分类 shell环境 每个shell进程有一个自己的运行环境,不同的Shell进程有不同的Shell环境。...读取配置文件情况分为两种: 用户登录启动的shell image.png 非用户登录启动的shell image.png 什么是子shell 所谓子shell,即从当前shell环境中新开了一个shell...环境,这个新开的shell环境就是子shell,而开启子shell的环境称为该子shell的父shell。...对于Shell的子进程来说,它是一个从父级Shell进程派生而来的新的Shell进程,我们将这种新的Shell进程称为这个父级Shell的子Shell。...子shell的分类 大致分为两类: sub shell:通过进程替换(cmd)、命令替换 child shell:通过以可执行文件的方式运行shell脚本或直接在当前shell中启动shell

    1.3K30

    shell编程——感知(shell变量)

    shell编程——感知(shell变量) 什么是shellShell是一种命令解释器,是用户与操作系统内核之间的接口程序。...Shell在用户和Linux内核之间提供了一个交互界面,它不仅能够接收用户输入的命令并传递给内核执行,还能将内核的执行结果以自然语言的形式展示给用户。...除了基本的命令解释功能,Shell还具备编写脚本的能力,使得用户能够自动化执行一系列命令,从而简化重复的系统任务 什么是shell变量 Shell中的变量是一种用于存储数据的结构,可以在脚本中使用。...在Shell中,变量赋值时不需要使用等号两边的空格,但为了可读性,建议加上空格。...#在Shell脚本中,${fruits[@]}中的@符号表示数组的所有元素。当使用@符号时,它会展开为数组中的所有元素,形成一个由空格分隔的元素列表。

    10400

    shell学习(八)Shell变量

    本地变量 定义Shell变量,变量名不需要加美元符号 $ 本地变量只在当前shell生存期中有效 变量定义 变量名要求:字母、数字、下划线组成,只能是字母或下划线开头,变量名严格区分大小写 取出变量值...,用在如脚本,函数传递参数使用,有如下特殊的,位置参数变量 $0 获取shell脚本文件名,以及脚本路径 $n 获取shell脚本的第n个参数,n在1~9之间,如$1,$2,$9,大于9则需要写...${10},参数空格隔开 $# 获取执行的shell脚本后边的参数总个数 $* 获取shell脚本所有参数,不加引号等同于$@作用,加上引号"$*"作用是接收所有参数为单个字符串,"$1 $2...shell for循环的知识 反斜杠 '\' ,是转义符号 ubuntu@VM-12-16-ubuntu:~$ cat different.sh #!...上一次命令执行状态返回值,0正确,非0失败 $$ 当前shell脚本的进程号 $!

    78300
    领券