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

在Linux上的C中,popen/system到"ps all> file"会将所有行截断为80个字符

Linux上的C中,popensystem函数用于执行外部命令,将输出重定向到文件。在Linux上使用popensystem执行ps命令,并将输出重定向到文件,可以获取Linux服务器上所有进程的信息。

具体实现代码如下:

代码语言:c
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>

int main() {
    DIR *dir;
    struct dirent *entry;
    char cmd[1024];

    // 打开目录
    dir = opendir("/proc");
    if (dir == NULL) {
        perror("Error: Could not open /proc directory");
        return 1;
    }

    // 遍历目录,读取每个进程的信息
    while ((entry = readdir(dir)) != NULL) {
        if (entry->d_type == DT_DIR) {
            // 获取进程ID
            pid_t pid = atoi(entry->d_name);

            // 打开进程文件
            FILE *fp = fopen(entry->d_name, "r");
            if (fp == NULL) {
                perror("Error: Could not open process file");
                continue;
            }

            // 读取进程的详细信息
            while (fgets(cmd, sizeof(cmd), fp) != NULL) {
                // 过滤出进程名称和进程状态
                if (strncmp(cmd, "Name:", 5) == 0) {
                    cmd[strlen(cmd) - 1] = '\0';
                    printf("Process Name: %s\n", cmd);
                } else if (strncmp(cmd, "State:", 6) == 0) {
                    cmd[strlen(cmd) - 1] = '\0';
                    printf("Process State: %s\n", cmd);
                }
            }

            // 关闭进程文件
            fclose(fp);
        }
    }

    // 关闭目录
    closedir(dir);
    return 0;
}

在上面的代码中,我们使用opendir函数打开/proc目录,然后使用readdir函数遍历目录,读取每个进程的信息。如果读取到的进程信息是目录,则使用atoi函数获取进程ID,并使用fopen函数打开进程文件,读取进程的详细信息。最后使用fclose函数关闭进程文件,并使用closedir函数关闭目录。

在上面的代码中,我们过滤出进程名称和进程状态,并输出到控制台上。

可以通过修改命令行,将需要过滤的进程信息提取出来,并保存到文件中使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

超详细讲解命令执行漏洞

,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令 当黑客能控制这些函数参数时,就可以将恶意系统命令拼接到正常命令,从而造成命令执行漏洞...启动扩展、版本、服务器配置信息、环境变量、操作系统信息、path变量等非常重要敏感配置信息 symlink(): #一般是linux服务器使用一个目标建立一个连接,在读取这个链接所连接文件内容...空格过滤 linux内置分隔符: {IFS}, IFS, IFS 9 利用重定向符< ,+过滤 对于 ,+ 等 符号过滤 , PS2变量PS4变量则为+ 关键词绕过 通过拆分命令达到绕过效果...g文件 命令:ls_ #将所有的文件名写到文件_里 命令:sh _ #由上至下按顺序执行由\拼接起来ls -t命令,并将结果输入文件g import requests from time...’“会被转义”\’",双引号“””会被转义""",分号";“会被转义”;" 这样escapeshellarg会将参数内容限制一对单引号或双引号里面,转义参数包括单引号或双引号 使其无法对当前执行进行截断

5.5K42

【愚公系列】2021年12月 Python教学课程 26-系统编程

os 模块主要功能:系统相关、目录及文件操作、执行命令和管理进程 Ps:其中进程管理功能主要是 Linux 相关,本节不做讨论。...os.environ 获取系统环境变量 os.sep 当前平台路径分隔符。 windows 下,‘\’, POSIX 系统‘/’。...os.pathsep PATH 环境变量分隔符, POSIX 系统‘:’, Windows ‘;’。 os.linesep 结束符。...Linux 是用 C,底层 libc 库和系统调用接口都是 C API,Python os 模块包括了对这些接口 Python 实现,通过 Python os 模块,可以调用 Linux...下面的例子会将 c:\python36 目录所有文件和子目录打印出来。

87820
  • Python运维中常用几十个Python运维脚本

    (xxxx-xx-xx)每日生成一个文件,例如今天生成文件2016-09-23.log, 并且把磁盘使用情况写到到这个文件。...根据用户输入数字,输出从0该数字之间所有的素数。(只能被1和自身整除素数) #!...---- (提示,使用ps aux 列出所有进程,过滤出RSS那列,然后求和) #!/magedu/bin/env python #!...#当len(name_file.readline() )0时,表示读完了文件,len(name_file.readline() )每一字符长度,空行内容\n也是有两个字符。...云计算及运维架构师高薪实战班》2018年11月26日即将开课,120天冲击Linux运维年薪30万,改变速约~~~~ *声明:推送内容及图片来源于网络,部分内容会有所改动,版权归原作者所有,如来源信息有误或侵犯权益

    1.6K51

    web安全学习笔记(不定时更新)

    且0x7e位置数字转换后必须字符型,concat只能连接字符串,不能连接数字。 布尔盲注 ?...(GBK)编码时,会认为两个字符是一个汉字(前一个ascii码要大于128(比如%df),才汉字范围),而且当我们输入单引号时,mysql会调用转义函数,将单引号变为',其中\十六进制是%5c,mysql...php exit();(file_put_contents) 谈一谈php://filter妙用 4.代码审计 linuxtee命令: exec执行是没有回显,”tee“将想要执行命令写入一个文件里面...环境下才能使用),MySQL还可以用注释方法/*注释内容*/ MD5绕过技巧 MD5截断绕过 array1[]=1&array2[]=2本来觉得数组绕过就可以可是,发现输出了????...原因是php数组进行string强制转换时,会将数组转换为NULL类型 null=null就成立了,没绕过去 所以我们需要一个,md5前不相等,而md5后全等 array1=%4d%c9%68%ff

    1.9K50

    我是如何利用环境变量注入执行任意命令

    这就是本文研究课题。 打开PHP底层源码,看下PHPsystem函数实际在做什么。...可见,PHPsystem调用是系统popen()。我们再深入一层,看看popen究竟在做什么。...0x02 寻找系统层源码方法 在此之前,先分享一下我们如何找到一些Linux自带工具、库源码。 理论因为Linux是开源,所以所有源码都可以拿到。...整体过程如下: 我之前星球介绍过command-not-found,这个网站可以查询一个命令各种操作系统包名。...&2)' sh -i -c "echo hello" 与dash类似,PS1也可以bash利用: 翻看代码时候,我还找到了另一个有趣环境变量,PROMPT_COMMAND。

    66710

    PHP文件系统函数(三)

    PHP文件系统函数(三) 总算来到我们最关心部分了,也就是 f 相关函数操作。基本大部分文件操作都是以今天学习这些内容基础,话不多说,我们就一个一个来学习学习吧。...fread() 函数第二个参数是每次要读取字节数,可以看到测试代码我们是以 4 个字节单位进行读取,所以文件内容都是按 4 个字节分开输出。...它可以方便地按读取 CSV ,并将它们解析成数组格式方便我们地操作。不过一般如果是 Excel 文件转换过来内容,我们都会将第一标题排除掉,当然,这个就是根据业务开发实际情况来说啦。...且与白云伴。 rewind($f); 在这段测试代码,我们使用 fgets() 读取了一内容,然后再使用 fpassthru() 直接就将文件剩余内容全部读取出来了。...文件操作,使用这个函数就能马上刷新缓冲区内容并将内容写入具体文件。 总结 是不是很嗨,一下子学习了这么多函数。这篇文章结束也就是 PHP 原生这些文件操作函数就学习完了。

    1.2K60

    shell 学习笔记(19)

    ,绝对路径只排除一个 --exclude-from=FILE是你要exclude所有东西都写在FILE这个文件里面,每个一 10:35:22#tp#test> find ....1840.linuxps -fe和ps aux都是截断,除非加-w, 我屏幕宽度157个字符,就是157截断,除非-ww,这样才是完整 13:19:50#tp#~> echo $COLUMNS...Linux hi hello LinuxUnix"|uniq -D -f 2 # -f 不比较前 n 个字段,-d 打印重复一次,-D 打印所有重复 hi hello...因此 ps -ef|grep ssh 可能会有两条/一条结果(ssh进程存在情况下) 2、其次PS结果, grep是 [s]sh, 而grep过滤内容是ssh, 所以就不会命中grep...状态,然而D状态进程(Linux,线程只是特殊进程)无法被中断, 因此kill -9无法杀掉D状态进程。

    1.1K50

    Windows PowerShell 实战指南-动手实验-3.8

    它使用 Width 参数将文件每一限制为 50 个字符。由于输出行在 50 个字符处被截断,因此将省略进程表最右列。...省略参数名时,这些参数值必须以指定 顺序出现在命令。在此示例,-Name 值(“list”)必须第一个参数,-Value 值 (“get-location”)必须第二个参数。...7.怎么保证你shell输入都在一个脚本(transcript),怎么保存这个脚本一个文本文件?...11.Out-File 命令输出到文件每一记录默认宽度大小多少个字符?是否有一个参数可以修改这个宽度? -Width 指定输出每一字符数。将截断任何额外字符,不换行。...如果省略此参数,则由主机特征确定宽度。Windows PowerShe ll 控制台默认值 80(字符)。 是否必需? False 位置? named 默认值 80 是否接受管道输入?

    2.2K20

    Lua输入输出

    真实Lua程序,从图形、数据库网络网络访问等大多数I/O操作,要么游宿主程序实现,要么通过不包括发行版外部库实现。...这种编码方式将所有非ASCII字符编码 =xx,其中xx是这个字符十六进制。...保证编码一致性,等号也会被编码: t = io.read("all") t = string.gsub(t,"[\128 - \255 = ]", function(c) return string.format...因此,调用函数file:seek()会返回当前位置且不改变当前位置;调用函数file:seek(“set”)会将位置重置文件开头并返回0;调用函数file:seek(“end”)会将当前位置文件结尾并返回文件大小...运行系统命令 函数os.execute用于运行系统命令,它等价于C语言中函数system。该函数参数表示待执行命令字符串,返回值命令运行结束后状态。

    71820

    Python23 内置模块讲解

    通过environ获取系统环境变量,以字典格式显示,Windows 如果一个key对应多个路径的话是以分好‘;’分隔,os.pathsep就是对应这个分隔符(Windows对应‘;’,linux...判断是否是以根开头绝对路径 Windows每个盘符都是根,linux/是根 如果False的话就是相对路径 4.17.6 os.path.isfile与 os.path.isdir ?...需要说明是,该方法python3.x才有。 (5) subprocess.Popen(): 一些复杂场景,我们需要将一个进程执行输出作为另一个进程输入。...另一些场景,我们需要先进入某个输入环境,然后再执行一系列指令等。这个时候我们就需要使用到suprocessPopen()方法。...注意:如果希望通过进程stdin向其发送数据,创建Popen对象时候,参数stdin必须被设置PIPE。

    1.7K20

    python 运维常用脚本

    () 按照这样日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成文件2013-09-23.log, 并且把磁盘使用情况写到到这个文件。...根据用户输入数字,输出从0该数字之间所有的素数。...") except KeyboardInterrupt: sys.exit("\n") ps 可以查看进程内存占用大小,写一个脚本计算一下所有进程所占用内存大小和。...(提示,使用ps aux 列出所有进程,过滤出RSS那列,然后求和) import sys import os list=[] sum=0 str1=os.popen("ps aux","r").readlines...IO数及字节数 p.connections() 返回打开进程socketnamedutples列表 p.num_threads() 进程打开线程数 下面的例子Popen作用是获取用户启动应用程序进程信息

    3.5K30

    【十】python基础之文件处理

    11 file.truncate([size]) 从文件首字符开始截断截断文件 size 个字符,无 size 表示从当前位置截断截断之后后面的所有字符被删除,其中 Widnows...() print("文件描述符:",fid) f.close() #关闭文件夹 输出: C:\Python35\python.exe D:/linux/python/all_test/总练习....读取所有:我要学Python5 读取所有:我要学Python6 读取所有:我要学Python7 6、truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件 size...D:/linux/python/all_test/总练习.py 读取数据: 我要学P 7、writelines() 方法用于向文件写入一序列字符串,这一序列字符串可以是由迭代对象产生,如一个字符串列表...需要注意是,当你再次使用“w”方式文件写数据,所有原来内容都会被删除。

    66530

    CTFRCE绕过

    ps:OGNL, SpEL, MVEL 绕过姿势 *号绕过(ノ*・ω・)ノ 这个理解起来其实很简单,这个指令放到Linux里面是这样 Linux,*是一个通配符,代表当前目录下所有隐藏目录和隐藏文件夹...我们利用这一点可以绕过CTF一些函数。 ps: <?php $c = $_GET['c']; if(!...`:将括号内命令处理完毕之后,会将返回信息传给bash,再次执行。 ;:执行完前面执行后面。...拼接法 这个大概思路,用两个参数来保存flag这个字符每个部分。大致如下 a=fl;b=ag;cat$IFS$a$b; 类似于这种。...原理 DNS解析时候会留下日志,我们将信息放在高级域名,传递自己这里,然后通过读日志获取信息。所以这里跟最初猜想基本一致,原理也就是通过DNS请求后,通过读取日志来获取我们请求信息。

    75520

    Python 执行Shell 外部命令

    1、os.system() 此方法执行外部程序,会将结果直接输出到标准输出。os.system返回结果执行shell $? 值。 因此请执行没有输出结果程序时适合使用此方法。...可以解决os.system那种无法获取程序执行结果缺点 os.popen 返回了一个类似与文件句柄东西。...若是序列时,则第一个元素可执行命令 unix 系统, shell=Ture 和 shell=False(默认) 和 args 参数有一定影响关系。...主要时 shell=False(默认值) 这个参数搞鬼。 UNIX, shell=False 时 subprocess.Popen() 使用os.execvp()去执行响应子程序。...当 args 是一个字符时候,Popen 认为这个字符串是序列第一个元素(可执行程序)。

    1.2K30
    领券