我想执行who命令并删除所需的信息,例如who | cut -d " " -f 1,21,23 who | cut -d " " -f 1,21,23但通过在 c 中使用 system() 函数。

我试过做system("who | cut -d " " -f 1,21,23")但没有用。

编码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define ErrorBC -69
int main(int argc, char* argv[]){
    if(argc < 2){
        printf("No arguments passed\n");
        return -69;
    }
    else{
        int i=0;
        for(i=1;i<argc;i++){
        if((strcmp("kernel",argv[i]))==0){
            system("uname -s -r");
        }
        else if(((strcmp("ulog",argv[i]))==0)){
                system("who | cut -d " " -f 1,21,23");
        }
        else{
            printf("%s is not a valid options\n",argv[i]);
        }
    }
    }
}

输出:

c99 test.c
/usr/sahil: ./a.out ulog
Usage: cut {-b <list> [-n] | -c <list> | -f <list> [-d <char>] [-s]} file ...

#1楼 票数:4 已采纳

使用"who | cut -d " " -f 1,21,23"你有两个字符串: "who | cut -d "" -f 1,21,23" 它们连接到"who | cut -d -f 1,21,23"

包括C字符串内的双引号需要用反斜杠转义"who | cut -d \\" \\" -f 1,21,23"

  ask by Sahil Mahale translate from so

未解决问题?本站智能推荐:

4回复

在C中将随机数输出到Linux中的文件

我正在尝试使用某个循环来将数字(随机生成)写入文件中。 我有: 该代码编译并运行。 我可以在屏幕上打印'n',文件已经打开(代码未显示),但是当我尝试使用gedit打开文件时,似乎文件中没有任何数据。 我想要一个具有一定长度的非常大数量的文件。 我要去哪里错了? 任何帮助表示赞赏。
1回复

如何在两个不同的C程序之间进行同步?

首先,我不知道我能否很好地解释我的问题,或者您是否可以通过适当的方式来解决它。 但我会尽力向您说明。 实际上,我有两个不同的C程序。 第一个是控制台上消息的简单循环打印: 第二个程序是一个阻止程序,该程序等待事件(按下按钮)打开我嵌入式板中的led。 当我执行第二个代码时,程序开
1回复

c中的分段错误Linux文件I/O通过cli输入

我试图编写 ac 程序,该程序通过命令行给定文件名,然后通过 system() 调用在文件上打开 nano 编辑器。 编辑并保存文件后,c 程序通过首先读取文件、排序内容然后写入文件来对文件进行排序。 但我收到分段错误。 请帮忙。
1回复

UNIX编码命令入门

我已经学习c和数据结构已有一段时间了,我想看看我是否可以应用所学到的知识。 我经过一番搜索后发现,我可以从util linux开始,但在这样做之前,我想我会检查一下并且可能会有点像“ cat”之类的基本unix命令的代码。 我能够理解部分代码可能试图执行的操作,但是我无法整体理解整个代码。
1回复

如何通过C库获取Linux硬件和系统信息?

我正在尝试实现一个通过蓝牙套接字发送有关当前系统的信息的系统(实际上是Linux服务器)。 这个后端代码在C语言中。我想知道是否有一个可用的库来获取诸如CPU温度,磁盘使用情况和进程运行等信息,仅举几例C代码。 如果不可能,您向我建议什么样的替代方案?
2回复

从fork()创建的两个进程调用时wait(0)是否执行任何操作?

我正在尝试理解fork是如何工作的,而且我知道当你调用fork()时,会创建另一个进程,该进程从完全相同的行恢复,并将堆和堆栈复制到它。 对于父级,fork()返回子级的PID,对于子级,它返回0。 我偶然发现了这个问题:“以下序列创建了多少个进程?” 答案是8,包括父母,但我不清楚是
3回复

终端与所有孩子一起失败,即使是SIGKILLed,但正常的过程不会这样做

当我们使用SIGKILL杀死它时,我希望在我的程序中具有与bash(终端)相同的效果。 因为我们知道我们无法在我们的程序中处理SIGKILL,所以当我杀死我的程序时,它的子程序被分配给init进程,没有办法处理它,这样我就可以杀死所有的子进程然后杀死父进程本身。 虽然我们杀死终端时,即使我们
1回复

Telnet处理wc和任何从键盘读取输入的命令

我是UNIX的新手,也是使用C语言进行编程的新手。 我要做的是telnet的简单实现。 我完成了双方的所有必需连接(服务器和客户端)。 在服务器上:收到的任何请求都会fork一个新进程来处理 这种用于处理来自客户端的命令的方法: 该程序可使用任何命令成功运行,但是当客户端编写